2010-06-14 20 views
10

Estoy tratando de conectarme a una base de datos sqlite con una aplicación C#. Nunca he trabajado con SQLLite antes.¿Cómo me conecto al archivo SQLite db desde C#?

var connectionString = @"data source='C:\TestData\StressData.s3db'"; 
      connection = new SQLiteConnection(connectionString); 
      connection.Open(); 

cuando intento abrir la conexión consigo la siguiente excepción:

System.NotSupportedException: The given path's format is not supported. 
    at System.Security.Util.StringExpressionSet.CanonicalizePath(String path, Boolean needFullPath) 
    at System.Security.Util.StringExpressionSet.CreateListFromExpressions(String[] str, Boolean needFullPath) 

¿Qué estoy haciendo mal?

Gracias ..

Nick

Actualización:

he cambiado 'fuente de datos' a la 'fuente de datos' como me sugirieron. Ahora recibo un nuevo error:

Después de cambiar esto, aparece un nuevo error: System.ArgumentException: el origen de datos no puede estar vacío. Uso: memoria: para abrir una base de datos en memoria en System.Data.SQLite.SQLiteConnection.Open()

¿Alguna sugerencia más?

+1

Intente eliminar los apóstrofos dentro de su cadena de conexión Parámetro DataSource: '@" DataSource = c: \ TestData \ StressData.s3db "'. –

Respuesta

13

¡Gracias ..

"data source=c:\TestData\StressData.s3db; Version=3;" 

Parece que el atributo 'Versión' no es opcional. Es interesante que el proveedor de .NET no muestre esto en la ventana de propiedades del diseñador.

+2

Usar el objeto SQLiteConnectionStringBuilder para construir una cadena de conexión (en lugar de codificarlo como una cadena) elimina la mayoría de los problemas como este (parámetro ambiguo nombres, errores tipográficos). Cuando se trata del atributo Versión, al menos mi SQLite no lo necesita. –

1

Según this, data source debería ser DataSource

+0

Doh! Creo que tienes razón. Después de cambiar esto, aparece un nuevo error: System.ArgumentException: el origen de datos no puede estar vacío. Uso: memoria: para abrir una base de datos en memoria en System.Data.SQLite.SQLiteConnection.Open() Debo proporcionar un argumento? – Nick

+0

@Nick, nunca he usado esto, pero de los documentos parece que el argumento debería ser 'new SQLiteConnection (" DataSource = C: \ TestData \ StressData.s3db ")'. No sé por qué no funciona: \ –

+1

Realmente parece que debería 'origen de datos' – Nick

Cuestiones relacionadas