Не удается открыть базу данных Sqlite в режиме только для чтения - PullRequest
6 голосов
/ 22 декабря 2011

У меня есть база данных Sqlite, которую я включаю в свое приложение MonoTouch.До сих пор он работал нормально для меня, но теперь я хочу открыть его в режиме только для чтения, а не в режиме чтения-записи.

Поэтому я изменил строку подключения так, чтобы она включала «Только чтение = Истина», нокогда я вызываю 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 ]

7 голосов
/ 22 декабря 2011

Вы нашли ошибку в Mono.Data.Sqlite.dll.

Флаг Create добавляется (по умолчанию) до разбора и установки флага ReadOnly. Полученный флаг недействителен, и sqlite сообщает об ошибке.

Я исправлю это в будущих выпусках (Mono и MonoTouch ...). Если это блокирует вас, откройте отчет об ошибке на http://bugzilla.xamarin.com, и я прикреплю фиксированную сборку (с инструкциями по замене существующей) к отчету об ошибке.

1 голос
/ 22 декабря 2011

Вы пробовали?:

var _conn = new SqliteConnection("Data Source=db/sampleDb;mode=ro");
0 голосов
/ 19 мая 2019

Это сработало для меня (ядро aspnet):

var _conn = new SqliteConnection("Data Source=db/sampleDb;mode=ReadOnly");
0 голосов
/ 22 декабря 2011

Ваш код правильный, я только что попробовал (не используя MonoTouch), и он работал для меня.

У вас есть последняя версия System.Data.SQLite.dll?Если да, то, возможно, это проблема, связанная с MonoTouch.

...