我如何更新SQL C#
本文关键字:SQL 更新 何更新 | 更新日期: 2023-09-27 18:36:25
我想更新我的数据库表,但收到此错误
System.Data.SqlClient.SqlException (0x80131904):变量名称"@ssn"已被声明。变量名称在查询批处理或存储过程中必须是唯一的。 必须声明标量变量"@Name"。
法典:
private void button3_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(@"Data Source=HP'BILSAY;Initial Catalog=Railway System;Integrated Security=True");
conn.Open();
try
{
SqlCommand cmd = new SqlCommand("UPDATE Employe SET SSN=@ssn,Name=@Name,Surname=@Surname,Address=@Address,Age=@Age,Phone=@Phone,Profession=@Profession WHERE SSN=@SSN ",conn);
cmd.Parameters.AddWithValue("@ssn", dataGridView1.CurrentRow.Cells[0].Value);
cmd.Parameters.AddWithValue("@ssn", textBox2.Text);
cmd.Parameters.AddWithValue("@Name", textBox3.Text);
cmd.Parameters.AddWithValue("@Surname", textBox4.Text);
cmd.Parameters.AddWithValue("@Adress", textBox5.Text);
cmd.Parameters.AddWithValue("@Age", textBox6.Text);
cmd.Parameters.AddWithValue("@Phone", textBox7.Text);
cmd.Parameters.AddWithValue("@Profesion", textBox8.Text);
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
cmd.ExecuteNonQuery();
conn.Close();
Employe emp = new Employe();
emp.Show();
MessageBox.Show("Updated.");
}
catch (SqlException)
{
MessageBox.Show("Error Occurs!");
}
}
}
System.Data.SqlClient.SqlException (0x80131904):变量名 "@ssn"已被宣布。变量名称在 中必须是唯一的 查询批处理或存储过程。
错误似乎很明显 - 您正在添加两个具有相同名称的参数("@ssn"
)。 您有一些选择:
- 重命名其中一个参数(在 SQL 和
Parameters.AddWithValue
调用中 - 不要更新
SSN
列,因为这是您正在使用的键值 - 添加一个独立的主键列(如自动递增整数),并将其用于查找而不是 SSN。
你有 2 次cmd.Parameters.AddWithValue("@ssn"...
。异常是正常的。
问题是您要添加两次参数。如果要在添加参数后更改参数的值,请尝试使用此cmd.Parameters("@ssn").value = "somevalue"