试图找到连接字符串到外部SQL Server的错误

时间:2012-05-08 09:05:18

标签: sql-server asp.net-mvc string connection

我正在运行asp.mvs web-application。 它已经托管,数据库也是由同一个托管服务提供商。 我正在尝试(已经3天)使用给定的connection string从数据库传输数据。 这是我的方法,我的connection string. 你能看一看,看看有些潜在的错误。 它非常令人讨厌,因为我无法做到这一点。

   /// <summary>
    /// Gets connection string of Database
    /// </summary>
    /// <returns>connection string of type const</returns>
    public static string GetConnectionStringOfDatabase()
    {
        try
        {
            string cnc = @"data source=OnlineVertrag.mssql.somee.com;workstation      id=OnlineVertrag.mssql.somee.com;packet size=4096;user id="xxx";pwd="xxx";persist security info=False;initial catalog=OnlineVertrag";
            return cnc;
        }
        catch (Exception ex)
        {
            bool rethrow = ExceptionHelper.Handle(ex, "Business Logic");
            if (rethrow)
            {
                throw;
            }
        }
        return null;
    }




 public bool CheckIfUserIsActive(string username)
        {
            SqlConnection connection = new SqlConnection(SQLDataHelper.GetConnectionStringOfDatabase());

            try
            {
                connection.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = connection;
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.CommandText = @"SELECT IsActive "
                                + "FROM Users "
                                + "WHERE Username = @Username";
                cmd.Parameters.Add(new SqlParameter("@Username", UserName));

                SqlDataReader reader = cmd.ExecuteReader();

                bool isActiveValueFromDataBase = false;

                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        isActiveValueFromDataBase = Convert.ToBoolean(reader["IsActive"]);
                        if (isActiveValueFromDataBase == true)
                        {
                            return true;
                        }
                        return false;
                    }
                }

                reader.Close();
            }

2 个答案:

答案 0 :(得分:1)

错误#1:在公共论坛中发布登录信息。

说真的 - 每个查看此页面并查看问题编辑历史记录的人现在都可以登录到您的数据库。您应该尽快更改密码。

错误#2:在代码中存储连接字符串。如您所见 - 密码更改可能会出乎意料。最简单的方法:存储在web.config中并使用ConfigurationManager.ConnectionStrings访问它们:

http://pietschsoft.com/post/2005/12/28/ASPNET-20-How-to-get-a-specific-ConnectionString-from-the-WebConfig-by-name.aspx

可能的错误#3:尝试“data source = OnlineVertrag.mssql.somee.com; user id = xxx; pwd = xxx; initial catalog = OnlineVertrag”。也许“工作站”和“id”之间的空格是问题。

答案 1 :(得分:0)

David Tischler所说的话。

您是否有SQL Management Studio或其他可以使用连接字符串进行连接的交互式SQL应用程序?至少在Microsoft SQL Server Management Studio for SQL Server 2008中,您只需将连接字符串粘贴到“其他连接参数”部分即可。我不认为早期版本中存在这种情况。

如何创建一个尝试连接到数据库的页面,然后将ex.Message显示为页面的一部分。也许这将向您展示SQL客户端库认为错误的内容。