【问题标题】:Connection to database with C#使用 C# 连接到数据库
【发布时间】:2020-12-26 13:55:18
【问题描述】:

我正在尝试为我的登录 wpf 连接到数据库。

SqlConnectionStringBuilder mConnectionBuilder = new SqlConnectionStringBuilder
{
    DataSource = @"(LocalDB)\MSSQLLocalDB",
    InitialCatalog = "UserData"               
};

using (SqlConnection mConnection = new SqlConnection(mConnectionBuilder.ConnectionString))
{
    SqlCommand mCommand = new SqlCommand
    {
        Connection = mConnection,
        CommandText = "Select Id, Username, E-Mail, Password from Users"
    };

    if (mConnection.State == ConnectionState.Closed)
    {
        mConnection.Open();
    }

    using (SqlDataReader mReader = mCommand.ExecuteReader())
    {
        while (mReader.Read())
        {
            string mUsername = Convert.ToString(mReader.GetValue(1));
            string mPassword = Convert.ToString(mReader.GetValue(2));

            if (txtLoginUsername.Text == mUsername && txtLoginPassword.Text == mPassword)
            {
                loginSuccessful = true;
            }
            else
            {
                MessageBox.Show("Wrong username or password");
            }
        }
    }
}

我在 Visual Studio 中创建了数据库并将其命名为 UserData。但是在 mConnection.Open() 我得到一个 SqlException “无法打开登录请求的数据库“UserData”。登录失败。用户(myUserName)登录失败“。 我知道在 C# 中使用 SQL 有多种不同的方法,但我希望它能够以这种方式非常努力地工作,因为我花了太多时间来寻找解决这个问题的方法。我希望我能在这里得到一些有用的信息:)

【问题讨论】:

  • mConnectionBuilder.ConnectionString的值是多少?
  • 用户密码不应以纯文本形式存储。解决连接问题后,请确保密码已加密。
  • SQL 数据库是一个 mdf 文件。您需要将 mdf 文件的位置添加到作为数据库(扩展 mdf 是可选的)属性的连接字符串中。
  • @user9938 这是不正确的。密码永远不应该被加密,它们需要被散列。如果您的意思是后者,请不要混淆术语,这些操作是不同的(加密是双向的,散列是单向的)

标签: c# sql


【解决方案1】:
String connetionString = null;
SqlConnection cnn;

connetionString = "Data Source=ServerName;Initial Catalog=DatabaseName;User ID=UserName;Password=Password"
cnn = new SqlConnection(connetionString);
try
{
    cnn.Open();
    MessageBox.Show ("Connection Open ! ");
    cnn.Close();
}
catch (Exception ex)
{
    MessageBox.Show("Can not open connection ! ");
}

【讨论】:

  • 欢迎来到堆栈溢出。仅代码答案已弃用,尤其是未注释/未记录的代码:请解释它如何“回答”“问题”。
  • (为什么没有using?)
猜你喜欢
  • 2011-11-12
  • 2012-04-27
  • 2011-08-22
  • 1970-01-01
  • 1970-01-01
  • 2011-08-03
  • 2012-09-08
  • 1970-01-01
相关资源
最近更新 更多