如何在SQL ce中运行批处理查询
本文关键字:运行 批处理 查询 ce SQL | 更新日期: 2023-09-27 18:17:09
例如:
StringBuilder query = new StringBuilder();
foreach (KeyValuePair<string, string> key in list)
{
string name = key.Key;
string emails = key.Value;
query.AppendFormat("insert into contacts(name, emails) values('{0}', '{1}');", name, emails);
}
string queries = query.ToString(); //how to run it?
这是可能的?
您的最佳选择是在循环之前开始事务,执行每条语句而不是将其添加到stringbuilder中,并在循环(或每n条记录)之后提交。
同样,您应该使用一个参数化的命令,类似于:
SqlCeCommand oCommand = conn.CreateCommand();
oCommand.CommandText = "insert into contacts(name, emails) values(?, ?)";
// I can't remember if the param names need @ or not
oCommand.Parameters.Add("@name", SqlDbType.VarChar);
oCommand.Parameters.Add("@email", SqlDbType.VarChar);
SqlCeTransaction oTrans = conn.BeginTransaction();
try {
foreach (KeyValuePair<string, string> key in list) {
oCommand.Parameters[0].Value = key.Key;
oCommand.Parameters[1].Value = key.Value;
oCommand.ExecuteNonQuery();
}
oTrans.Commit();
} catch (Exception ex) {
oTrans.Rollback();
}
或者,您可以使用codeplex中的SQL Compact Bulk Insert Library。我相信这使用了一个TableDirect sqlecommand之上的SqlCeResultSet,它应该绕过查询处理器,并尽可能快,你可以得到。
这是精简版V3.5中不支持的特性。不确定它是否在V4中改变了。
打开连接/事务和循环是你唯一的选择。
不好意思,这是坏消息!