我有一个巨大的清单INSERT INTO ...
字符串。目前我运行它们:
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
foreach (var commandString in sqlCommandList)
{
SqlCommand command = new SqlCommand(commandString, connection);
command.ExecuteNonQuery();
}
}
我看到每个ExecuteNonQuery()
还执行commit。
- 有没有办法在单个事务中插入所有行(最后提交)?
- 我想要单笔交易的原因是为了让我的“插入”过程更快。单笔交易也会加快速度吗?
如果您在一个线程中执行多个查询,建议使用 SQL 事务,您可以这样使用:
SqlTransaction trans;
try
{
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
trans = connection.BeginTransaction();
foreach (var commandString in sqlCommandList)
{
SqlCommand command = new SqlCommand(commandString, connection,trans);
command.ExecuteNonQuery();
}
trans.Commit();
}
catch (Exception ex) //error occurred
{
trans.Rollback();
//Handel error
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)