SQL Server:UPDATE关系表

时间:2015-02-01 11:52:28

标签: c# sql sql-server relational-database

我想更新book和名为R_Kital_Al的用户之间的关系表 但是我得到了这个错误;

  

System.Data.SqlClient.SqlException(0x80131904):无法插入   具有唯一索引的对象'dbo.R_Kitap_Al'中的重复键行   'IX_Kitap_Al'。重复键值为(15)。

如何解决此错误?

private void Update_Click(object sender, EventArgs e)
{
        SqlConnection conn = new SqlConnection(@"Data Source=HP\SQLEXPRESS;Initial Catalog=Kütüphane;Integrated Security=True");

        conn.Open();
        SqlCommand cmd = new SqlCommand("UPDATE R_Kitap_Al SET SSN=@SSN,Book_No=@Book_No,BaslamaTarihi=@BaslamaTarihi,BitisTarihi=@BitisTarihi", conn);
        DateTime dt = new DateTime();
        cmd.Parameters.AddWithValue("@SSN",dataGridView1.CurrentRow.Cells[0].Value);
        cmd.Parameters.AddWithValue("@Book_No",book_NoTextBox.Text);
        cmd.Parameters.AddWithValue("@BaslamaTarihi",baslamaTarihiDateTimePicker.Value);
        dt = Convert.ToDateTime(baslamaTarihiDateTimePicker.Value);
        dt = dt.AddDays(0);
        bitisTarihiDateTimePicker.Value = dt.AddDays(15);
        cmd.Parameters.AddWithValue("@BitisTarihi", bitisTarihiDateTimePicker.Value);

        cmd.ExecuteNonQuery();
        this.Hide();
        R_Kitap_Al kit = new R_Kitap_Al();
        kit.ShowDialog();
        this.Close();
}

2 个答案:

答案 0 :(得分:0)

没有where子句,因此您使用指定的值更新该表中的每一行。其中一列是主键还是外键?

答案 1 :(得分:0)

我们无法在唯一的唯一键中插入重复值。

因此,在您的表 ' SSN' ' Book_No '列可能是唯一的。 请检查 ' SSN' 列中的 ' 15' 或的 ' Book_No'

请从提及列中删除唯一键,或尝试使用不同的值而不是15来更新。