【发布时间】:2013-03-01 06:54:04
【问题描述】:
正如我从SQLite FAQ 看到的那样,它在任何时候都支持多进程读取(SELECT)和仅一个进程写入(INSERT、UPDATE、DELETE)数据库:
SQLite 使用读/写锁来控制对数据库的访问。 当任何进程要写入时,它必须锁定整个数据库文件 在其更新期间。但这通常只需要几个 毫秒。其他进程只是等待作者完成然后 继续他们的业务
我正在通过 c# 使用System.Data.SQLite 适配器。
请问有人可以解释一下吗?究竟这个过程是如何进行的?
如果已经在同一个数据库上执行另一个写入 SQLiteCommand,这个过程是否会自动工作并且写入 SQLiteCommand 会简单地等待?
或者它可能会抛出异常?什么样的?
抱歉,我没有找到有关此机制的信息 :)
谢谢。
更新:
我发现帖子说 exception will be raised 带有特定的错误代码
这个说法正确吗?
【问题讨论】:
-
还没有 :) 我更喜欢在编码之前阅读教程 - 以获得优化和正确的解决方案...
-
如果您更喜欢
optimized and correct solutions,请不要将 SQLite 用于未优化的东西;这是一个很棒的数据库,但它不是一个很棒的多用户数据库。 -
我的项目需要免费且轻量级(我的意思是零配置和无服务器)数据库。所以大多数“多用户优化”的数据库都不适合我:)
标签: c# database sqlite locking system.data.sqlite