我如何更新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"已被宣布。变量名称在 中必须是唯一的 查询批处理或存储过程。

我如何更新SQL C#

错误似乎很明显 - 您正在添加两个具有相同名称的参数("@ssn")。 您有一些选择:

  • 重命名其中一个参数(在 SQL 和Parameters.AddWithValue调用中
  • 不要更新SSN列,因为这是您正在使用的键值
  • 添加一个独立的主键列(如自动递增整数),并将其用于查找而不是 SSN。

你有 2 次cmd.Parameters.AddWithValue("@ssn"...。异常是正常的。

问题是您要添加两次参数。如果要在添加参数后更改参数的值,请尝试使用此cmd.Parameters("@ssn").value = "somevalue"