2016-06-19 3 views
1

Я пытаюсь обновить мои строки базы данных из DataGridView используя этот код:Обновление таблицы базы данных из DataGridView в 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); 
     } 
    } 
} 

Но я в конечном итоге получаю эту ошибку:

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

может быть, это помогает ... заменить Еогеасп строку с этим: 'Еогеасп (System.Web.UI.WebControls.GridViewRow dr в dataGridView1.Rows) ' –

+0

' DataGridView' не содержит 'GridViewRows'. Сообщение об ошибке сообщает вам, что вы смешиваете объект из 2 совершенно разных пространств имен. – Plutonix

+0

@Plutonix. Я сделал это, чтобы попытаться получить текст из таблицы dataGridView. но теперь я понимаю свою ошибку. также вы знаете, как получить текст из dataGridView? –

ответ

0

Это Еогеасп (DataGridViewRow ... не Foreach (GridViewRow ... Как в msdn documentation .Rows недвижимость:

Gets an array of DataGridViewRow objects.

для того, чтобы компилировать код с этим изменением, вы должны будете использовать .Value вместо .text при доступе клеток значения

+0

Да, я пробовал это, но проблема в том, что я не могу получить текст из Я не могу ввести dataGridView1.Rows.Cells.Text, но я могу получить текст из gridViewRow. Не могли бы вы объяснить его код? И спасибо за ответ. –

+0

Ну, в коде, который вы написали, у вас будет ошибка компиляции в foreach. Но если вы замените тип данных из GridViewRow в DataGridViewRow, код должен скомпилировать welll. – meJustAndrew

+0

Я понимаю, что вы имеете в виду, но когда я меняю его на dataGridViewRow, он показывает ошибку в .Text, как я могу это исправить? Я попытался изменить его на .value, но это не сработало. –

0

Вы делаете DataReader и пытается обновить. Для обновления вам необходимо выполнитьNonQuery. Таким образом, вместо:

myReader = command.ExecuteReader(); 

Вам нужно

cmd.ExecuteNonQuery(); 

Вот как ваш код при необходимости цикл по каждому элементу взорам как

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

У меня все еще такая же ошибка. Фактически это показывает мне ошибку в части gridViewRow dr. –

+0

Что говорит эта ошибка? – DoLoop

+0

{«Невозможно наложить объект типа« System.Windows.Forms.DataGridViewRow »на тип« System.Web.UI.WebControls.GridViewRow ».»} –

Смежные вопросы