2011-12-22 25 views
6

Tengo una base de datos Sqlite que incluyo con mi aplicación MonoTouch. Hasta ahora me ha funcionado bien, pero ahora quiero abrirlo en modo de solo lectura en lugar de leer y escribir.No se puede abrir la base de datos Sqlite en modo de solo lectura

Así que han cambiado la cadena de conexión para incluir 'sólo lectura = True', pero cuando llamo a Open(), me sale el siguiente error:

Library used incorrectly (at Mono.Data.Sqlite3.Open) 

Si cavo en la excepción que demuestra

_errorCode = Misuse 

y eso es toda la información que brinda.

Aquí está el código:

var _conn = new SqliteConnection("Data Source=db/sampleDb;Read Only=True"); 
_conn.Open(); 

Respuesta

7

Encontró un error en Mono.Data.Sqlite.dll.

El indicador Create se agrega (de forma predeterminada) antes de analizar y establecer el indicador ReadOnly. El indicador resultante no es válido y sqlite informa un error.

Arreglaré esto para futuras versiones (de Mono y MonoTouch ...). Si esto te bloquea, abre un informe de error en http://bugzilla.xamarin.com y adjuntaré un ensamblaje fijo (con instrucciones para reemplazar el existente) al informe de fallas.

+0

Muy útil saber, muchas gracias. No estoy exactamente bloqueado por eso, pero me gustaría abrir un error para rastrear el estado, lo haré ahora. – vlad259

+0

En caso de que esto sea útil para las personas, aquí hay un enlace al error que planteé: http://bugzilla.xamarin.com/show_bug.cgi?id=2721 – vlad259

1

Ha intentado ?:

var _conn = new SqliteConnection("Data Source=db/sampleDb;mode=ro"); 
0

Su código es correcto, yo sólo probé (no usar MonoTouch) y funcionó para mí.

¿Tiene la última versión de System.Data.SQLite.dll? Si es así, entonces tal vez sea un problema relacionado con MonoTouch.

Cuestiones relacionadas