连接到 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 (没有例外!)散列和加盐你的密码,如果你真的必须存储它们....
我尝试用 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 (没有例外!)散列和加盐你的密码,如果你真的必须存储它们....