【发布时间】:2015-12-04 16:39:04
【问题描述】:
大家好,下面是我的带有多个插入语句的 C# 代码的 sn-p。我将它们放入事务括号中,并使用准备好的语句。例如,我的挑战是我知道我现在在 cmdText3 中遇到了问题,但没有生成任何错误消息。在这种情况下,我应该在哪里添加额外的 try 和 catch 来帮助我调试并提醒我错误?我可以在准备好的语句中看到对数据执行的确切查询是什么吗?
myCon getMyCon1 = new myCon(); MySqlConnection con = getMyCon1.GetConnection();
using (MySqlTransaction trans = con.BeginTransaction())
{
try
{
long rID = 0;
String cmdText1 = "INSERT INTO record1(fiscalPeriod,financialYear) VALUES(@fiscalPeriod,@financialYear)";
using (MySqlCommand cmd = new MySqlCommand(cmdText1, con, trans))
{
cmd.Parameters.AddWithValue("@fiscalPeriod", fiscalPeriod.SelectedValue);
cmd.Parameters.AddWithValue("@financialYear", financialYear.SelectedValue);
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
rID = cmd.LastInsertedId;
}
foreach (object line in linesC)
{
if (line.GetType() == typeof(TypeC))
{
TypeC typesC = (TypeC)line;
String companyName = typesC.comName;
String periodStart = typesC.periodStart;
String periodEnd = typesC.periodEnd;
String cmdText2 = "INSERT INTO record2(rID,companyName,,periodStart,periodEnd,) VALUES(@rID,@companyName,@periodStart,@periodEnd)";
using (MySqlCommand cmd = new MySqlCommand(cmdText2, con, trans))
{
cmd.Parameters.AddWithValue("@rID", rID);
cmd.Parameters.AddWithValue("@companyName", companyName);
cmd.Parameters.AddWithValue("@periodStart", periodStart);
cmd.Parameters.AddWithValue("@periodEnd", periodEnd);
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
}
}
foreach (object line in linesP)
{
if (line.GetType() == typeof(TypeP))
{
TypeP typesP = (TypeP)line;
String supplierName = typesP.supName;
String invoiceDate = typesP.invoiceDate;
String invoiceNo = typesP.invoiceNo;
String cmdText3 = "INSERT INTO record2(rID,supplierName,invoiceDate,invoiceNo) VALUES(@rID,@supplierName,@invoiceDate,@invoiceNo,)";
using (MySqlCommand cmd = new MySqlCommand(cmdText3, con, trans))
{
cmd.Parameters.AddWithValue("@rID", rID);
cmd.Parameters.AddWithValue("@supplierName", supplierName);
cmd.Parameters.AddWithValue("@invoiceDate", invoiceDate);
cmd.Parameters.AddWithValue("@invoiceNo", invoiceNo);
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
}
}
trans.Commit();
}
catch (Exception ex)
{
trans.Rollback();
}
}
con.Close()
【问题讨论】:
标签: c# mysql prepared-statement