3

在我的服务器应用程序(用 c# 编写)中,多个请求同时出现,服务器在 sqlite db 上执行读写操作。

现在的问题是,当服务器尝试在其他一些请求时向数据库插入任何内容时,正在从数据库读取然后transaction.Commit()抛出异常database is locked,但是ExecuteNonQuery()正在成功执行。所以问题只是提交到数据库。

我们在每次插入和更新查询后提交。是否可以通过只提交一次来避免这个问题(将数据库保存在内存中并在应用程序关闭时提交)?或者有没有其他方法可以处理这种情况。

4

1 回答 1

1

看来您需要实现Busy CallbackBusy Timeout,sql lite 在您编写时必须锁定整个数据库:

多个进程可以同时打开同一个数据库。多个进程可以同时执行 SELECT。但是,任何时候只有一个进程可以对数据库进行更改。

多个应用程序或同一应用程序的多个实例可以同时访问单个数据库文件吗?

于 2013-07-31T12:22:38.897 回答