无法以只读模式打开Sqlite数据库

时间:2011-12-22 10:45:07

标签: c# .net sqlite mono xamarin.ios

我有一个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 ();

4 个答案:

答案 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");