我想将数据从datagrid保存到数据库,我使用了以下代码。
foreach (DataGridViewRow r in dataGridView_displaycount.Rows)
{
SqlCommand cmd = new SqlCommand("insert into StocktransferlocationDetails(date,stocktransferlocation,Itemcode,Count,Description) values(@date,@stocktransferlocation,@Itemcode,@Count,@Description) ", con);
cmd.Parameters.AddWithValue("@date",System.DateTime.Now);
cmd.Parameters.AddWithValue("@stocktransferlocation", comboBox_locationfrom.SelectedText+"-"+comboBox_locationto.SelectedText);
cmd.Parameters.AddWithValue("@Itemcode", r.Cells[1].Value.ToString());
cmd.Parameters.AddWithValue("@Count", r.Cells[2].Value.ToString());
cmd.Parameters.AddWithValue("@Description", r.Cells[3].Value.ToString());
cmd.ExecuteNonQuery();
}
这里我的问题是datagrid包含最后一个空行。所以我写了数据,当涉及到空行时,它会抛出一个错误。
答案 0 :(得分:2)
为什么在这里使用 foreach 循环?
使用 for 循环,如:
for(int i=0; i<dataGridView_displaycount.Rows.Count-1; i++)
{
//Your code
}
这应该是解决问题的简单解决方案,而不是任何其他代码更改。
更新:将gridview数据添加到数据库:
for(int i=0; i< dataGridView_displaycount.Rows.Count-1;i++)
{
Strquery= @"Insert into StocktransferlocationDetails(date,stocktransferlocation,....) values ("
+ System.DateTime.Now +", "+ comboBox_locationfrom.SelectedText+"-"+comboBox_locationto.SelectedText +","
+ dataGridView_displaycount.Rows[i].Cells[1].Value +".......);";
cmd.CommandText = Strquery;
cmd.ExecuteNonQuery();
}
答案 1 :(得分:0)
你可以使用像这样:
For(int row=0;row<datagridview.rows.count;row++)
{
//Do Work
}
答案 2 :(得分:0)
尝试检查空值,如下面的代码所示:
foreach (DataGridViewRow r in dataGridView_displaycount.Rows)
{
SqlCommand cmd = new SqlCommand("insert into StocktransferlocationDetails(date,stocktransferlocation,Itemcode,Count,Description) values(@date,@stocktransferlocation,@Itemcode,@Count,@Description) ", con);
cmd.Parameters.AddWithValue("@date", System.DateTime.Now);
cmd.Parameters.AddWithValue("@stocktransferlocation", comboBox_locationfrom.SelectedText + "-" + comboBox_locationto.SelectedText);
if (r.Cells[1] != null && r.Cells[1].Value != null)
cmd.Parameters.AddWithValue("@Itemcode", r.Cells[1].Value.ToString());
if (r.Cells[2] != null && r.Cells[2].Value != null)
cmd.Parameters.AddWithValue("@Count", r.Cells[2].Value.ToString());
if (r.Cells[3] != null && r.Cells[3].Value != null)
cmd.Parameters.AddWithValue("@Description", r.Cells[3].Value.ToString());
cmd.ExecuteNonQuery();
}
答案 3 :(得分:0)
您可以尝试最后一行:
cmd.Parameters.AddWithValue("@Description", r.Cells[3].Value ?? DBNull.Value);