C# 数据库中受影响的行数不正确
我的应用程序中有以下代码,用于更新数据库C# 数据库中受影响的行数不正确,c#,mysql,sql,C#,Mysql,Sql,我的应用程序中有以下代码,用于更新数据库 MySqlConnection summaryConn = new MySqlConnection(summaryConStr); MySqlCommand summaryCmd = new MySqlCommand(); summaryCmd.Connection = summaryConn; int effectedRows = 0; try { summaryConn.Open(); foreach (string query
MySqlConnection summaryConn = new MySqlConnection(summaryConStr);
MySqlCommand summaryCmd = new MySqlCommand();
summaryCmd.Connection = summaryConn;
int effectedRows = 0;
try
{
summaryConn.Open();
foreach (string query in queries)
{
try
{
if (query.Length == 0)
continue;
if (summaryConn.State != ConnectionState.Open)
summaryConn.Open();
summaryCmd.CommandText = query;
int tempRowCount = -1;
tempRowCount = summaryCmd.ExecuteNonQuery();
effectedRows = tempRowCount > -1 ? effectedRows + tempRowCount : effectedRows;
}
catch (Exception ex)
{
logExeption(ex);
}
}
}
catch(Exception exc)
{
logException(exc)
}
以下是上述代码的日志:书面分析:开始日期:2014-01-16 22:48:17。
2410.9814453秒内分析中更新/插入/删除6778634行。
插入:0,更新:905,删除:0。WritingInAnalytics于:2014-01-16 23:28:28完成。
供参考,目标表已编制索引,插入的行根据唯一索引按8列分组,更新和删除行使用自动增量主键。
这里我的问题是,由于要更新的行总数为905,因此无需插入和删除。那为什么受影响的行是6778634?然而,这种行为很少见,但对我来说很痛苦。
有人能告诉我我缺少了什么吗?
谢谢。如果执行这些查询花费了这么多时间,为什么不使用存储过程并向其发送查询列表?如何记录更新/插入/删除记录的计数?你能显示相关的代码吗?@Damith:通过在datatable上循环计算,每一行都有一个标志,指示该行是插入、更新还是删除。我已经对它进行了调试,并验证了它是否正常工作。