无法打开登录名wpf-sql请求的数据库



我正在WPF中创建一个应用程序。该应用程序名为圣约翰,基本上是一堆文本框,用于保存患者的详细信息。到目前为止,我已经建立了一个数据库,文本框和一些背景代码。我目前遇到一个错误,我认为这与连接字符串有关。目前,我还是C#和SQL Server的新手。

错误状态:

无法打开登录请求的StJohnsDatabase。登录失败。。。

这是我的源代码。我有5个文本框和一个按钮(save_btn):

private void save_btn_Click(object sender, RoutedEventArgs e)            
{
    SqlConnection con = new SqlConnection("Integrated Security=True");
    con.ConnectionString = @"Data Source=(LocalDB)v11.0;Initial Catalog=StJohnsDatabase;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False";
    try
    {
        string sql = "INSERT INTO [patient] (PatientId , Firstname, Surname, Phonenumber, time) values(" + patient_id_tb.Text + " , ' " + firstname_tb.Text + " ' , ' " + surname_tb.Text + " ' , " + phone_number_tb.Text + " , ' " + time_tb.Text + " ' )";
        SqlCommand exeSql = new SqlCommand(sql, con);
        con.Open();
        exeSql.ExecuteNonQuery();
        MessageBox.Show("Saved!");
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "Error!");
    }
    finally
    {
        con.Close();
    }
 }

(顺便说一句,我在互联网上搜索了很长时间,找不到/不明白什么是不正确的/如何解决这个问题。)

仔细检查连接字符串。。

始终建议使用参数化查询以避免sql注入

string sql = "INSERT INTO [patient] (PatientId , Firstname, Surname, Phonenumber, time) values (@PatientId,@Firstname,@Surname,@Phonenumber,@time)";
SqlCommand exeSql = new SqlCommand(sql, con);
exeSql.Parameters.AddWithValue("@PatientId",patient_id_tb.Text);
exeSql.Parameters.AddWithValue("@Firstname",firstname_tb.Text);
exeSql.Parameters.AddWithValue("@Surname",surname_tb.Text );
exeSql.Parameters.AddWithValue("@Phonenumber",phone_number_tb.Text);
exeSql.Parameters.AddWithValue("@time",time_tb.Text);

集成安全意味着您的应用程序将作为当前登录的windows用户连接到数据库。您当前的windows用户帐户是否有有效的数据库登录,或者是否使用特定的用户名/密码登录。

如果你有一个特定的用户名/密码,你必须在你的连接字符串中指定它们:

con.ConnectionString = @"Data Source=(LocalDB)v11.0;Initial Catalog=StJohnsDatabase;User Id={username}; Password={password};Connect Timeout=15;Encrypt=False;TrustServerCertificate=False";

我发现了问题。这100%与连接字符串不正确有关。

最新更新