我有一个Sqlite数据库,我包含在我的MonoTouch应用程序中。到目前为止,它对我来说运行良好,但现在我想以只读模式打开它而不是读写。
所以我更改了连接字符串以包含'Read Only = True',但是当我调用Open()时,我收到以下错误:
Library used incorrectly (at Mono.Data.Sqlite3.Open)
如果我深入研究它显示的例外
_errorCode = Misuse
这就是它给出的所有信息。
以下是代码:
var _conn = new SqliteConnection("Data Source=db/sampleDb;Read Only=True");
_conn.Open ();
答案 0 :(得分:7)
您在Mono.Data.Sqlite.dll
中发现了一个错误。
在解析和设置Create
标志之前附加ReadOnly
标志(默认情况下)。生成的标记无效, sqlite 报告错误。
我会为将来的版本(Mono和MonoTouch ......)解决这个问题。如果这阻止了你,那么请打开http://bugzilla.xamarin.com的错误报告,我将附加一个固定的程序集(带有替换现有程序的说明)到错误报告。
答案 1 :(得分:1)
你试过吗?:
var _conn = new SqliteConnection("Data Source=db/sampleDb;mode=ro");
答案 2 :(得分:0)
您的代码是正确的,我只是尝试过(不使用MonoTouch),它对我有用。
您是否拥有System.Data.SQLite.dll
的最新版本?
如果是,那么可能是与MonoTouch相关的问题。
答案 3 :(得分:0)
这对我有用(aspnet核心):
var _conn = new SqliteConnection("Data Source=db/sampleDb;mode=ReadOnly");