2016-08-03 11 views
-1

Der Versuch, die Tabelle Student_Course in einer Datenbank in SQL zu aktualisieren, es läuft, aber ich halteWie aktualisiert man die Tabelle in SQL?

Violation of Primary Key, Cannot enter duplicate

ich wirklich brauchen, um nur die Noten Wert zu aktualisieren bekommen, sondern müssen es in die CID (Kurs-ID) und SID übereinstimmen (Studentenausweis)

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

Zwei Down-Stimmen ohne Grund? Dies kann eine Anfängerfrage sein, aber es liegt in unserer Verantwortung, ihn auch dabei zu unterstützen :) –

+0

Sie müssen einige Kriterien aktualisieren. 'UPDATE [TABLE] SET [SPALTE] = WHERE [SPALTE] = '. Sonst wird es versuchen, alle Zeilen der Tabelle auf die ' 'zu aktualisieren, die Sie bestanden haben ... –

Antwort

2
"UPDATE Student_Course SET Mark = @Mark WHERE [email protected] AND [email protected]" 

Dies sollte die richtige SQL-Anweisung sein, weil Sie versuchen, das Mark Feld in Ihrer Student_Course Tabelle auf den CID & Basis zu aktualisieren SID der Person.

1

Was Sie zuvor getan haben, ist set der Wert der CID/SID auf dem Sie eine primary key - die eindeutig sein muss.

Die SQL Sie suchen ist:

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

Und im Code (der CID und SID die Mark durch Einstellung):

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

Sie benötigen eine Abfrage zu ändern:

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

zu (verwenden Sie einen WHERE Klausel) :

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

Da Sie den Markenwert zusammen mit einer Übereinstimmung auf CID und SID aktualisieren möchten.

Sie haben zuvor alle Einträge in Ihrer Datenbank aktualisiert. Für welche hast du einen Fehler:

Violation of Primary Key, Cannot enter duplicate

Da von CID und SID (wahrscheinlich dieses als primäre Schlüssel festgelegt wurde) hat einen Wert, der vorher festgelegt wurde.

Verwandte Themen