2016-08-03 41 views
-1

嘗試更新在SQL數據庫中的表Student_Course,它運行,但我不斷收到如何更新SQL中的表?

Violation of Primary Key, Cannot enter duplicate

我真的只需要更新標記值,但需要與之相匹配的CID(課程編號)和SID (學生證)

private void btnAdd_Click(object sender, EventArgs e) 
{ 
    using (SqlConnection con = new SqlConnection(cs)) 
    { 
     try 
     { 
      using (var cmd = new SqlCommand("UPDATE Student_Course SET [email protected], [email protected] , [email protected]", con)) 
      { 
       cmd.Connection = con; 
       con.Open(); 
       cmd.Parameters.AddWithValue("@CID", cboCID.GetItemText(cboCID.SelectedItem)); 
       cmd.Parameters.AddWithValue("@SID", cboSID.GetItemText(cboSID.SelectedItem)); 
       cmd.Parameters.AddWithValue("@Mark", Convert.ToInt32(txtMark.Text)); 

       if (cmd.ExecuteNonQuery() > 0) 
       { 
        MessageBox.Show("Mark Added"); 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Error during insert: " + ex.Message); 
     } 
    } 
} 
+2

兩票沒有理由倒票?這可能是一個初學者的問題,但我們有責任引導他做這個:) –

+0

您需要更新一些標準。 'UPDATE [TABLE] SET [COLUMN] = WHERE [COLUMN] = '。否則,它會嘗試更新表格的所有行到您通過的''... –

回答

1

之前您所做的是setCID/SID的值,您有一個primary key - 它必須是唯一的。

你正在尋找的是SQL:

UPDATE Student_Course 
SET [email protected] 
WHERE [email protected] AND [email protected] 

(由CIDSID設置Mark)並在代碼:

private void btnAdd_Click(object sender, EventArgs e) 
{ 
    using (SqlConnection con = new SqlConnection(cs)) 
    { 
     try 
     { 
      using (var cmd = new SqlCommand("UPDATE Student_Course SET [email protected] WHERE [email protected] AND [email protected]", con)) 
      { 
       cmd.Connection = con; 
       con.Open(); 
       cmd.Parameters.AddWithValue("@CID", cboCID.GetItemText(cboCID.SelectedItem)); 
       cmd.Parameters.AddWithValue("@SID", cboSID.GetItemText(cboSID.SelectedItem)); 
       cmd.Parameters.AddWithValue("@Mark", Convert.ToInt32(txtMark.Text)); 

       if (cmd.ExecuteNonQuery() > 0) 
       { 
        MessageBox.Show("Mark Added"); 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Error during insert: " + ex.Message); 
     } 
    } 
} 
0

您需要更改您的查詢:

using (var cmd = new SqlCommand("UPDATE Student_Course SET [email protected], [email protected] , [email protected]", con)) 

(使用WHERE條款)

using (var cmd = new SqlCommand("UPDATE Student_Course SET [email protected] WHERE [email protected] AND [email protected]", con))        
                    ^^^^^^^ 

因爲您想要更新標記值以及CIDSID上的匹配項。

您以前更新過數據庫中的所有條目。對於您遇到一個錯誤:

Violation of Primary Key, Cannot enter duplicate

因爲,出CID和SID 的(大概是這樣的一個被設置爲您的主鍵)了先前設置的值。