2017-05-03 73 views
-1

我试过下面的代码,但我可以添加一行记录只添加到mysql数据库。我输入了三行记录,但只添加了一行记录。问题是什么?如何添加多个记录添加到数据库从datagridview c#

for (int i = 0; i < dataGridView1.Rows.Count; i++) 
    { 

     MySqlCommand cmd = new MySqlCommand(); 
     cmd.Connection = con; 

     cmd.CommandText = "insert into salesproductnew(salesid,productname,qty,price,grosstotal)values(@salesid,@productname,@qty,@price,@grosstotal)"; 


     cmd.Parameters.AddWithValue("@salesid", lbinvoice.Text); 
     cmd.Parameters.AddWithValue("@productname", dataGridView1.Rows[i].Cells[2].Value); 
     cmd.Parameters.AddWithValue("@qty", dataGridView1.Rows[i].Cells[3].Value); 
     cmd.Parameters.AddWithValue("@price", dataGridView1.Rows[i].Cells[4].Value); 
     cmd.Parameters.AddWithValue("@grosstotal", dataGridView1.Rows[i].Cells[5].Value); 

     con.Open(); 
     cmd.ExecuteNonQuery(); 

     MessageBox.Show("Record added ............."); 
     con.Close(); 

    } 
+0

用try..catch包装代码,看看你是否有例外 –

+0

我也没有例外。没有错误。只有一行记录只在数据库中添加了什么发生了另一个记录请修复这个问题 –

+0

任何一个帮助我? –

回答

0

您没有重置您的cmd的参数,您正在每个周期添加新参数。可能没有正面回答,只是试试这个

MySqlCommand cmd = new MySqlCommand(); 
cmd.Connection = con; 
con.Open(); 
cmd.CommandText = "insert into salesproductnew(salesid,productname,qty,price,grosstotal)values(@salesid,@productname,@qty,@price,@grosstotal)"; 
for (int i = 0; i < dataGridView1.Rows.Count; i++) 
{ 
    cmd.Parameters.Clear(); 
    cmd.Parameters.AddWithValue("@salesid", lbinvoice.Text); 
    cmd.Parameters.AddWithValue("@productname", dataGridView1.Rows[i].Cells[2].Value); 
    cmd.Parameters.AddWithValue("@qty", dataGridView1.Rows[i].Cells[3].Value); 
    cmd.Parameters.AddWithValue("@price", dataGridView1.Rows[i].Cells[4].Value); 
    cmd.Parameters.AddWithValue("@grosstotal", dataGridView1.Rows[i].Cells[5].Value); 

    cmd.ExecuteNonQuery(); 

} 

    MessageBox.Show("Record added ............."); 
    con.Close(); 

顺便说一句,你不必明确的参数。有关更多信息,请参见this SO

+0

它没有作用 –

+0

@LoshiniLoganathan你有没有收到任何错误信息? – Orifjon

+0

没有错误,我可以在数据库中添加一行记录。我无法添加多个记录...请帮助我 –