连接到 SQL 服务器并添加用户导致错误

Connecting to SQL Server and add user results in an error

我尝试用 C# 编写代码以连接到 SQL 服务器数据库,这样我就可以注册一个用户帐户,但我不知道为什么会卡在

con.Open(); 

我正确地输入了服务器名称,我已经尝试使用 User ID = sa;Password = ..;,我尝试了没有密码但仍然没有。

protected void Button1_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection("Data Source=DESKTOP-62V61RT/SQLEXPRESS; Initial Catalog =ShopOnlineDB; Integrated Security=False; User ID = sa; Password= ..;");
    con.Open();

    SqlCommand cmd = new SqlCommand("INSERT INTO User (FirstName, LastName, Email, Password) VALUES (@FirstName, @LastName, @Email, @Password)", con);
    cmd.Parameters.AddWithValue("@FirstName", TextBox1.Text);
    cmd.Parameters.AddWithValue("@LastName", TextBox2.Text);
    cmd.Parameters.AddWithValue("@Email", TextBox3.Text);
    cmd.Parameters.AddWithValue("@Password", TextBox4.Text);

    cmd.ExecuteNonQuery();
    con.Close();

    Label1.Text = "Registered with success !";
}

很可能只是一个小错字 - 在您的连接字符串中使用 反斜杠 - 而不是正斜杠:

protected void Button1_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(@"Data Source=DESKTOP-62V61RT\SQLEXPRESS; Initial Catalog =ShopOnlineDB; Integrated Security=False; User ID = sa; Password= ..;");
    con.Open();

    SqlCommand cmd = new SqlCommand("INSERT INTO User (FirstName, LastName, Email, Password) VALUES (@FirstName, @LastName, @Email, @Password)", con);

    // use the .Add() method, and explicitly define the data type 
    // (and for strings - their max length) for your parameters!
    cmd.Parameters.Add("@FirstName", SqlDbType.VarChar, 50).Value =  TextBox1.Text;
    cmd.Parameters.Add("@LastName", SqlDbType.VarChar, 50).Value = TextBox2.Text;
    cmd.Parameters.Add("@Email", SqlDbType.VarChar, 255).Value = TextBox3.Text;
    cmd.Parameters.Add("@Password", SqlDbType.VarChar, 100).Value = TextBox4.Text;

    cmd.ExecuteNonQuery();
    con.Close();

    Label1.Text = "Registered successfully!";
}

此外 - 使用 sa 用户通常 不是 一个好主意 - 最好使用 built-in Windows 身份验证,或创建合适的应用程序用户 - 但不要使用系统管理员帐户 - 你只是在寻求安全问题......

您还应该检查 Can we stop using AddWithValue() already? 并停止使用 .AddWithValue() - 它可能会导致意外和令人惊讶的结果...

最后但并非最不重要的一点 - 您应该永远不要明文存储密码在你的数据库中 - 你应该 ALWAYS (没有例外!)散列和加盐你的密码,如果你真的必须存储它们....