这与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
。
当我检查以上代码时,每分钟可以更新约 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吗?我是否遗漏了什么?
如果我需要运行单个语句,则更新所需的时间太长,如上所述...