gpt4 book ai didi

c# - 在 SQLite + BEGIN TRANSACTION 中更新更快

转载 作者:IT王子 更新时间:2023-10-29 06:23:06 28 4
gpt4 key购买 nike

这个也与 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;
}

在上面的逻辑中,castarraylistArraylist,其中包含需要处理到数据库中的值。

当我检查上面的代码时,在 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 吗?有什么我想念的吗?

如果我需要运行单独的语句,那么如上所述更新会花费太多时间...

最佳答案

SQLite 支持事务,你可以试试下面的代码。

using (var cmd = new SQLiteCommand(conn))
using (var transaction = conn.BeginTransaction())
{
for (int y = 0; y < castarraylist.Count; y++)
{
//Add your query here.
cmd.CommandText = "INSERT INTO TABLE (Field1,Field2) VALUES ('A', 'B');";
cmd.ExecuteNonQuery();
}
transaction.Commit();
}

关于c# - 在 SQLite + BEGIN TRANSACTION 中更新更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24444838/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com