这一个也与 spatilite 相关(不仅是 SQLite)
我有一个文件数据库(xyz.db
),我正在使用它SQLiteconnection
(SQLiteconnection
扩展至空间站)。
我有很多记录需要更新到数据库中。
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 吗?有什么我想念的吗?
如果我需要运行单独的语句,那么如上所述更新需要花费太多时间......