在c#中以单行和多行方式插入两个表
本文关键字:插入 两个 方式 单行 | 更新日期: 2023-09-27 17:54:39
我试图插入到两个表作为一个是客户的主要详细信息和另一个表是客户的子详细信息。意味着第一行将采取参数从控件和第二表将从datagridview。这两个必须在一个方法中完成。我试过了
public void CstmrInsUp(string cstName, string cstSName, string AdLn1, string AdLn2, string AdCity, string AdPin, string SAdLn1, string SAdLn2, string SAdCity, string SAdPin, string TelPh1, string TelPh2, string FaxNo, string MailId, string TinNo,string cstDtlName,string cstDsgntn,string cstDtMobl,string cstDtEmail)
{
try
{
int cstId=1;
int? grntdId=0;
cstmrDC.Connection.Open();
trns = cstmrDC.Connection.BeginTransaction();
cstmrDC.Transaction = trns;
cstmrDC.customers_iu(cstId, cstName, cstSName, AdLn1, AdLn2, null, AdCity, AdPin, SAdLn1, SAdLn2, null, SAdCity, SAdPin, TelPh1, TelPh2, FaxNo, MailId, null, TinNo, 1,ref grntdId);
cstmrDC.customerscntcts_iu(null, cstId, cstDtlName, cstDsgntn, cstDtMobl, cstDtEmail, 1);
trns.Commit();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
if (trns != null)
trns.Rollback();
}
}
这里customersdtls表应该像在datagridview行中一样被触发。我将参数传递为
for (int i = 0; i < dgvCustInfo.Rows.Count - 1; i++)
{
cstnam = dgvCustInfo.Rows[i].Cells[0].Value.ToString();
dsgntn = dgvCustInfo.Rows[i].Cells[1].Value.ToString();
mblNo = dgvCustInfo.Rows[i].Cells[3].Value.ToString();
eMail = dgvCustInfo.Rows[i].Cells[4].Value.ToString();
//cst.InsrtDgv(cstnam, dsgntn, extNo, mblNo, eMail);
//write a log event with the user information , system information, and activity
}
cstCls.CstmrInsUp (txtCustmr。文本,txtShrtNam。文本,txtLn1。文本,txtLn2。Text, txtCity.Text,pin.ToString(),txtSpLn1.Text,txtSpLn2.Text,txtSpCty.Text,pin.ToString(), Phn1.ToString(), Phn2.ToString(), fax.ToString(), txtemaile .Text, txttino .Text,cstnam,dsgntn,mblNo,eMail);
通过这样做。第一个记录只是保存。我如何实现从datagridview和控件插入所有行。谢谢你
在您的方法CstmrInsUp
变量cstId
总是1
。我认为这是主键值,所以它插入值为1
的第一个记录。然后,它不能插入另一行相同的custid
。因此,它抛出一个错误,事务被回滚。