我正在尝试使用存储过程将数据添加到主/详细信息表中。
我试过了:
private void ekle()
{
MySqlCommand cmd = new MySqlCommand("invinputfrompo", bag);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("?trnotes", MySqlDbType.Text).Value = tb1.Text;
for (int i = 0; i <= dg1.Rows.Count - 1; i++)
{
if (Convert.ToBoolean(dg1.Rows[i].Cells[0].Value) == true)
{
cmd.Parameters.Add("?docno", MySqlDbType.VarChar).Value = dg1.Rows[i].Cells[9].Value.ToString();
cmd.Parameters.Add("?idpodetails", MySqlDbType.Int32).Value = Convert.ToInt32(dg1.Rows[i].Cells[5].Value.ToString());
cmd.Parameters.Add("?idmat", MySqlDbType.Int32).Value = Convert.ToInt32(dg1.Rows[i].Cells[6].Value.ToString());
cmd.Parameters.Add("?sn", MySqlDbType.VarChar).Value = dg1.Rows[i].Cells[2].Value;
cmd.Parameters.Add("?qty", MySqlDbType.Decimal).Value = Convert.ToDecimal(dg1.Rows[i].Cells[1].Value);
//if (dg1.CurrentRow.Cells[4].Value.ToString() == "") { cmd.Parameters.Add("?shelflife", MySqlDbType.Date).Value = DBNull.Value; }
//else { cmd.Parameters.Add("?shelflife", MySqlDbType.Date).Value = dg1.CurrentRow.Cells[4].Value.ToString(); }
cmd.Parameters.Add("?shelflife", MySqlDbType.VarChar).Value = dg1.Rows[i].Cells[4].Value;
}
}
cmd.Connection = bag;
cmd.ExecuteNonQuery();
}
只有第一个参数“trnotes”会被添加到主表中,其他参数将被添加到详细信息表中。
我做了这样的循环,但方式不成功。它说你已经定义了“docno”(详细信息表中的第一个参数)
你能帮忙输入数据吗?
答案 0 :(得分:0)
当if语句第二次运行时,它会尝试将docno
添加到第一次迭代时创建的参数列表中。在第一次迭代中添加了docno
,它已经存在。
有几种方法可以解决这个问题: