2010-06-14 15 views
10

Sto provando a connettermi a un db sqllite da un'applicazione C#. Non ho mai lavorato con SQLLite prima.Come posso connettermi al file db SQLite da C#?

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

quando tento di aprire la connessione ottengo la seguente eccezione:

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) 

Che cosa sto facendo di sbagliato?

Grazie ..

Nick

Aggiornamento:

ho cambiato 'origine dei dati' a 'DataSource' come suggerito a me. Ora ricevo un nuovo errore:

Dopo aver modificato questo messaggio, ricevo un nuovo errore: System.ArgumentException: Data Source non può essere vuota. Usa: memoria: per aprire un database in memoria su System.Data.SQLite.SQLiteConnection.Open()

Altri suggerimenti?

+1

Provare a rimuovere gli apostrofi all'interno della stringa di connessione Parametro DataSource: '@" DataSource = c: \ TestData \ StressData.s3db "'. –

risposta

13

Got it ..

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

Sembra che l'attributo 'versione' non è un optional. Interessante il fatto che il provider .NET non lo mostri nella finestra delle proprietà del designer.

+2

Utilizzare l'oggetto SQLiteConnectionStringBuilder per creare una stringa di connessione (invece di codificarla come una stringa) elimina la maggior parte dei problemi come questo (parametro ambiguo nomi, errori di battitura). Quando si tratta dell'attributo Version, almeno il mio SQLite non ne ha bisogno. –

1

Secondo this, data source dovrebbe essere DataSource

+0

Doh! Penso che tu abbia ragione. Dopo averlo modificato, viene visualizzato un nuovo errore: System.ArgumentException: Data Source non può essere vuota. Usa: memoria: per aprire un database in memoria su System.Data.SQLite.SQLiteConnection.Open() Devo fornire un argomento? – Nick

+0

@Nick, non l'ho mai usato, ma dai documenti sembra che l'argomento dovrebbe essere 'new SQLiteConnection (" DataSource = C: \ TestData \ StressData.s3db ")'. Non so perché non funzioni: \ –

+1

In realtà sembra che dovrebbe 'origine dati' – Nick

Problemi correlati