C# datagridview的for循环中出现异常
我想在按下按钮后更新数据库中的记录。要更新的记录显示在datagridview中。datagridview中有3行。第一条记录成功地得到更新,但当循环第二次重复时,它会显示一个异常 “已定义参数'@p_t'。” 以下是我正在使用的代码片段:C# datagridview的for循环中出现异常,c#,exception,datagridview,C#,Exception,Datagridview,我想在按下按钮后更新数据库中的记录。要更新的记录显示在datagridview中。datagridview中有3行。第一条记录成功地得到更新,但当循环第二次重复时,它会显示一个异常 “已定义参数'@p_t'。” 以下是我正在使用的代码片段: private void button1_Click(object sender, EventArgs e) { con.Open(); cmd.Connection = con; try { for (int
private void button1_Click(object sender, EventArgs e)
{
con.Open();
cmd.Connection = con;
try
{
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
cmd.CommandText = "update sale_order set paid_today=@p_t, balance_due=(" + dataGridView1.Rows[i].Cells[3].Value + "-" + dataGridView1.Rows[i].Cells[4].Value + ") where order_no=" + dataGridView1.Rows[i].Cells[0].Value + "";
cmd.Parameters.AddWithValue("@p_t", dataGridView1.Rows[i].Cells[4].FormattedValue);
cmd.ExecuteNonQuery();
}
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
private void按钮1\u单击(对象发送者,事件参数e)
{
con.Open();
cmd.Connection=con;
尝试
{
对于(int i=0;i
使用cmd.Parameters.Clear()代码>位于for循环的末尾
来自
从SqlParameterCollection中删除所有SqlParameter对象
因为在第二次迭代中,cmd
已经有了@p\u t
参数。您需要在每次迭代中清除参数
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
cmd.CommandText = "update sale_order set paid_today=@p_t, balance_due=(" + dataGridView1.Rows[i].Cells[3].Value + "-" + dataGridView1.Rows[i].Cells[4].Value + ") where order_no=" + dataGridView1.Rows[i].Cells[0].Value + "";
cmd.Parameters.AddWithValue("@p_t", dataGridView1.Rows[i].Cells[4].FormattedValue);
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
for(int i=0;i
我不知道是否有特殊原因,但通常如果要迭代所有行,需要使用I
而不是I
还参数化了您的balance\u due
和order\u no
列值,就像您对paid\u today
列所做的那样。有一次,我使用了相同的插入方法,但没有使用cmd.parameter.clear(),但在本例中没有。你能告诉我为什么…?@HaiderKhattak,因为我不知道你的INSERT
代码,但你可能会在每次迭代中创建一个新的SqlCommand
实例。喜欢<代码>对于(…){SqlComamnd cmd=new SqlCommand();}