2016-06-19 9 views
1

ich meine Datenbank Zeilen aus den DataGridView mit diesem Code zu aktualisieren bin versucht zu:Aktualisieren von Datenbanktabelle von Datagridview in C#

private void button2_Click(object sender, EventArgs e) 
{ 
    foreach (GridViewRow dr in dataGridView1.Rows) 
    { 
     string constring = "Data Source = localhost; port = 3306; username = root; password = 0159"; 
     string Query = "Update TopShineDB.Table1 set Time = '" + dr.Cells[0].Text + "', CarColorNumber = '" + dr.Cells[1].Text + "', Interior = '" + dr.Cells[2].Text + "', Exterior = '" + dr.Cells[3].Text + "', CPlastic = '" + dr.Cells[4].Text + "', MPlastic = '" + dr.Cells[5].Text + "', SPlastic = '" + dr.Cells[6].Text + "', PlasticB = '" + dr.Cells[7].Text + "', WashExt = '" + dr.Cells[8].Text + "', WashEng = '" + dr.Cells[9].Text + "', WashTrunk = '" + dr.Cells[10].Text + "', WashSeats = '" + dr.Cells[11].Text + "', SeatsRmv = '" + dr.Cells[12].Text + "', SeatsFit = '" + dr.Cells[13].Text + "', Notes = '" + dr.Cells[14].Text + "', where Time = '" + dr.Cells[0].Text + "' ;"; 
     MySqlConnection conn = new MySqlConnection(constring); 
     MySqlCommand command = new MySqlCommand(Query, conn); 
     MySqlDataReader myReader; 

     try 
     { 
      conn.Open(); 
      myReader = command.ExecuteReader(); 
      MessageBox.Show("Table Successfully Updated"); 
      while (myReader.Read()) 
      { 

      } 
     } 
     catch (Exception ex) 
     { 
       MessageBox.Show(ex.Message); 
     } 
    } 
} 

Aber ich am Ende diesen Fehler:

{"Unable to cast object of type 'System.Windows.Forms.DataGridViewRow' to type 'System.Web.UI.WebControls.GridViewRow'."} 
+0

vielleicht zugreifen, das hilft ... ersetzen Sie die foreach Linie mit diesem: 'foreach (System.Web.UI.WebControls.GridViewRow dr in DataGridView1.Rows) ' –

+0

Ein' DataGridView' enthält 'GridViewRows' nicht. Die Fehlermeldung sagt Ihnen, dass Sie Objekt aus 2 völlig verschiedenen Namespaces mischen – Plutonix

+0

@Plutonix Ich habe nur dies versucht, um den Text aus der DataGridView-Tabelle zu erhalten. aber ich verstehe jetzt meinen fehler. haben Sie auch eine Idee, wie Sie den Text von der DataGridView bekommen? –

Antwort

0

Es ist foreach (DataGridViewRow ... nicht foreach (GridViewRow ... Wie in msdn documentation .Rows Eigenschaft:

Gets an array of DataGridViewRow objects.

für Code Um diese Änderung zu kompilieren, müssen Sie .Wert statt .Text verwenden, wenn Sie Zellen Werte

+0

Ja, ich habe versucht, aber das Problem ist, ich kann nicht scheinen, um den Text von der Zelle, wie ich datagrid1.Rows.Cells.Text nicht eingeben kann, aber ich kann den Text aus dem GridViewRow erhalten. Kannst du es bitte erklären? Und danke für die Antwort. –

+0

Nun, in dem Code, den du geschrieben hast, wirst du bei foreach einen Kompilierungsfehler haben. Aber wenn Sie den Datentyp in DataGridViewRow von GridViewRow ersetzen, sollte der Code gutl kompilieren. – meJustAndrew

+0

Ich verstehe, was Sie meinen, aber wenn ich es in DataGridViewRow ändern, zeigt es einen Fehler unter .Text, wie kann ich das beheben? Ich habe versucht, es in .value zu ändern, aber es hat nicht funktioniert. –

0

Sie tun DataReader und versucht zu aktualisieren. Um zu aktualisieren, müssen Sie nonQuery ausführen. Also statt:

myReader = command.ExecuteReader(); 

Sie benötigen

cmd.ExecuteNonQuery(); 

Hier ist, wie Sie Ihren Code unter foreach-Schleife Notwendigkeit, sieht aus wie

string constring = "Data Source = localhost; port = 3306; username = root; password = 0159"; 
string Query = "Update TopShineDB.Table1 set Time = '" + dr.Cells[0].Text + "', CarColorNumber = '" + dr.Cells[1].Text + "', Interior = '" + dr.Cells[2].Text + "', Exterior = '" + dr.Cells[3].Text + "', CPlastic = '" + dr.Cells[4].Text + "', MPlastic = '" + dr.Cells[5].Text + "', SPlastic = '" + dr.Cells[6].Text + "', PlasticB = '" + dr.Cells[7].Text + "', WashExt = '" + dr.Cells[8].Text + "', WashEng = '" + dr.Cells[9].Text + "', WashTrunk = '" + dr.Cells[10].Text + "', WashSeats = '" + dr.Cells[11].Text + "', SeatsRmv = '" + dr.Cells[12].Text + "', SeatsFit = '" + dr.Cells[13].Text + "', Notes = '" + dr.Cells[14].Text + "', where Time = '" + dr.Cells[0].Text + "' ;"; 
MySqlConnection conn = new MySqlConnection(constring); 
MySqlCommand command = new MySqlCommand(Query, conn); 
            try 
         { 
          con.Open(); 
          command.ExecuteNonQuery(); 
          con.Close(); 
         } 

         catch (Exception ex) 
         { 
          MessageBox.Show(ex.ToString()); 
         } 
+0

Ich habe immer noch den gleichen Fehler. In der Tat zeigt es mir den Fehler im GridViewRow dr Teil. –

+0

Was sagt dieser Fehler? – DoLoop

+0

{"Kann Objekt des Typs 'System.Windows.Forms.DataGridViewRow' nicht in den Typ 'System.Web.UI.WebControls.GridViewRow' eingeben."} –

Verwandte Themen