我在 Fluent NHibernate 项目上使用 SQLite(system.data.sqlite v. 1.0.60.0)。
我有一个程序写入数据库,另一个程序从中读取。有时,我会遇到 SQLITE_BUSY 异常,我需要解决这个问题。
我在 Google 中发现了多个对 sqlite_busy_timeout 的引用,这(如果我理解正确的话)将导致 SQLite 在抛出异常之前重试。这可能足以满足我的需求。
但是,这似乎不在 system.data.sqlite 程序集中。
当我使用对象浏览器搜索 SetTimeout 时,我得到了两次匹配:
System.Data.SQLite.SQLite3.SetTimeout(int)
System.Data.SQLite.SQLiteBase.SetTimeout(int)
但我似乎无法在我的代码中使用它们 - 它们不会出现在 Intellisense 中,并且 VS2008 为 SQLite3 显示红色下划线,并显示消息“无法访问此处的内部类”。
谁能给我一个示例(在 C# 中)以显示此方法的确切语法?
或者这是正确的方法吗?我可能可以在我的代码中检查 SQLITE_BUSY,但也没有找到任何证明该方法的好例子。
最后,Fluent NHibernate 或 NHibernate 是否有任何机制来提供对 SQLite 数据库的简单共享访问?
最佳答案
就像你说的,SetTimeout() is internal ,所以你(或 NHibernate)不能调用它。该方法只包装
sqlite_busy_timeout
和抛出,你肯定不想在你的应用程序代码中使用那些不安全的方法。
根据 this ,SQLite 提供程序应重试 30 秒。
关于c# - 谁能提供 SQLite "SetTimeout"的 C# 示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3089065/