【发布时间】:2014-08-18 03:38:02
【问题描述】:
这个也与 spatilite 相关(不仅是 SQLite)
我有一个 文件数据库 (xyz.db),SQLiteconnection 正在使用它(SQLiteconnection 扩展到了 spatialite)。
我有很多记录需要更新到数据库中。
for (int y = 0; y < castarraylist.Count; y++)
{
string s = Convert.ToString(castarraylist[y]);
string[] h = s.Split(':');
SQLiteCommand sqlqctSQL4 = new SQLiteCommand("UPDATE temp2 SET GEOM = " + h[0] + "WHERE " + dtsqlquery2.Columns[0] + "=" + h[1] + "", con);
sqlqctSQL4.ExecuteNonQuery();
x = x + 1;
}
在上面的逻辑castarraylist是Arraylist,其中包含需要处理到数据库中的值。
当我检查上面的代码时,1 分钟内更新了大约 400 条记录。
有什么方法可以提高性能吗?
注意 ::(文件数据库不是线程安全的)
2。开始交易
假设我喜欢在 Spatialite 中使用单个事务运行两个(或数百万个)更新语句。这可能吗?
我在线阅读并为我准备了以下声明(但没有成功)
BEGIN TRANSACTION;
UPDATE builtuparea_luxbel SET ADMIN_LEVEL = 6 where PK_UID = 2;
UPDATE builtuparea_luxbel SET ADMIN_LEVEL = 6 where PK_UID = 3;
COMMIT TRANSACTION;
以上语句未更新我的数据库中的记录。 SQLite 不支持 BEGIN TRANSACTION 吗? 有什么我想念的吗?
如果我需要运行单个语句,那么如上所述更新需要花费太多时间......
【问题讨论】:
标签: c# sql sqlite spatialite