2015-12-05 24 views
1

運行此代碼從DataGridView的精細數值也保存成功地,但在數據庫中保存的輸入的值後一個空行也被添加在TABL如何使用的foreach

private void save_Click(object sender, EventArgs e) 
    { 
     foreach (DataGridViewRow row in dataGridView1.Rows)// picks data from dataGridview     
     { 

      try // MySql connection 
      { 
       string MyConnectionString = "Server=localhost; Database=markcreations; Uid=root; Pwd=admin"; 
       MySqlConnection connection = new MySqlConnection(MyConnectionString); 
       MySqlCommand cmd = new MySqlCommand(); 
       cmd = connection.CreateCommand(); 
       cmd.Parameters.AddWithValue("@invoice", row.Cells["Invoice"].Value); 
       cmd.Parameters.AddWithValue("@jobOrder", row.Cells["jobOrder"].Value); 
       cmd.Parameters.AddWithValue("@dateTime", row.Cells["Date"].Value); 
       cmd.Parameters.AddWithValue("@clientCode", row.Cells["Client Code"].Value); 
       cmd.Parameters.AddWithValue("@clientName", row.Cells["Client Name"].Value); 

       cmd.CommandText = "INSERT INTO record(invoice, jobOrder, dateTime, clientCode, clientName)VALUES(@invoice, @jobOrder, @dateTime, @clientCode, @clientName)"; 
       connection.Open(); 
       cmd.ExecuteNonQuery(); 
       connection.Close(); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 
     MessageBox.Show("Records inserted."); 
    } 

回答

1

它插入datagridview的記錄到MySQL數據庫看起來您在DataGridView中有一個空行,可能是最後一行,用於新行。該行對每列都有空值,如果你不檢查它,它會插入NULL。您可以使用row.IsNewRow來檢查新行。

0

感謝buddy它的工作。

下面是正確的代碼與row.IsNewRow

private void button5_Click(object sender, EventArgs e) 
    { 
     string MyConnectionString = "Server=localhost; Database=markcreations; Uid=root; Pwd=admin"; 
     MySqlConnection connection = new MySqlConnection(MyConnectionString); 

     foreach (DataGridViewRow row in dataGridView1.Rows)     
     { 
     try 
      { 
       MySqlCommand cmd = new MySqlCommand(); 
       cmd = connection.CreateCommand(); 
       if (row.IsNewRow) continue; 
       cmd.Parameters.AddWithValue("@invoice", row.Cells["Invoice"].Value); 
       cmd.Parameters.AddWithValue("@jobOrder", row.Cells["jobOrder"].Value); 
       cmd.Parameters.AddWithValue("@dateTime", row.Cells["Date"].Value); 
       cmd.Parameters.AddWithValue("@clientCode", row.Cells["Client Code"].Value); 
       cmd.Parameters.AddWithValue("@clientName", row.Cells["Client Name"].Value); 
       cmd.Parameters.AddWithValue("@jobName", row.Cells["Job Name"].Value); 
       cmd.Parameters.AddWithValue("@flexQuality", row.Cells["Flex Quality"].Value); 
       cmd.Parameters.AddWithValue("@sizeLength", row.Cells["Size Length"].Value); 
       cmd.Parameters.AddWithValue("@sizeWidth", row.Cells["Size Width"].Value); 
       cmd.Parameters.AddWithValue("@rate", row.Cells["Rate"].Value); 
       cmd.CommandText = "INSERT INTO record(invoice, jobOrder, dateTime, clientCode, clientName, jobName, flexQuality, sizeLength, sizeWidth, rate)VALUES(@invoice, @jobOrder, @dateTime, @clientCode, @clientName, @jobName, @flexQuality, @sizeLength, @sizeWidth, @rate)"; 
       connection.Open(); 
       cmd.ExecuteNonQuery(); 
       connection.Close(); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 
     MessageBox.Show("Records inserted."); 
    } 
沿