2012-06-04 2 views
6
private void SetConnection() 
{ 
    string a = string.Format(@"Data Source={0};Version=3;New=False;Compress=True;", "~/lodeDb.db"); 
    sql_con = new SQLiteConnection(a); 
} 

private void ExecuteQuery(string txtQuery) 
{ 
    SetConnection(); 
    sql_con.Open(); 
    sql_cmd = sql_con.CreateCommand(); 
    sql_cmd.CommandText = txtQuery; 
    sql_cmd.ExecuteNonQuery(); 
    sql_con.Close(); 
} 

quando corro a sql_cmd.ExecuteNonQuery, SqlException è "Impossibile aprire il file di database". file "lodeDb.db" sul mio hosting online, penso che la fonte dei dati sia sbagliata. Mi può dire se il file db in hosting online. Come impostare datasourse per il collegamento ringrazia Nota: file di autorizzazione non è un problema quiSqlite + C#: Impossibile aprire il file di database

+1

hai trovato una soluzione al tuo problema?Non hai impostato alcuna risposta come soluzione, e non hai scritto niente tu stesso. – gajo357

risposta

5

Si tratta di una stringa di connessione di Emissione,

SQL Lite stringhe di connessione formati

base:

Data Source=filename;Version=3; 

utilizzando UTF16:

Data Source=filename;Version=3;UseUTF16Encoding=True; 

Con la password

Data Source=filename;Version=3;Password=myPassword; 

Utilizzando il formato del database pre 3.3x:

Data Source=filename;Version=3;Legacy Format=True; 

Con il pool di connessioni:

Data Source=filename;Version=3;Pooling=False;Max Pool Size=100; 

Leggi unico collegamento:

Data Source=filename;Version=3;Read Only=True; 

EDIT 1:
Connessione al database remoto differisce, è necessario verificare quanto segue.

  1. Permissibilità porta firewall.
  2. La società/host che fornisce il database consente la connessione remota.
+1

Ci scusiamo ma quando eseguo un'applicazione nel mio computer locale, questa app funziona molto bene. Ma distribuisco l'app sul server ---> error. Puoi dirmi come connettermi al database – Futureman

3

Il mio problema si risolve quando si aggiunge "Modalità diario = Off;" nella stringa di connessione

Disabilitare il file di journal Questo disabilita completamente il journal di rollback.

Origine dati = c: \ mydb.db; Versione = 3; Modalità diario = Off;

26

ho avuto la stessa eccezione quando si cerca di aprire i database che si trovano sull'unità di rete (percorso inizia con "\\ myserver \ myDbFile ...") e ho risolto che mettendo true al parametro parseViaFramework nel costruttore di connessione.

sql_con = new SQLiteConnection(a, true); 
+1

Questo ha funzionato perfettamente per me (usando Parallels su un Mac che fa il default della mappatura di rete dietro le quinte). – terphi

+0

Si è verificato un problema durante la creazione e lo spostamento della directory bin in un percorso esterno. Funzionerebbe bene nella cartella Visual Studio, ma non nella nuova posizione. L'impostazione della mia connessione per includere parseviaframework ha funzionato perfettamente e ha risolto l'errore "impossibile aprire db" nel mio progetto C#. Grazie! – SheldonH

+0

Puoi anche anteporre percorsi UNC con '\\\', come descritto [qui] (http://sqlite.1065341.n5.nabble.com/System-Data-SQLite-and-UNC-Paths-td72920.htm) . – tm1

1

Ho avuto lo stesso problema e ha risolto il tutto con stringa di query del tipo: @ "Data Source = C: \ ProgramData \ proj \ lodeDb.db; Version = 3; FailIfMissing = False"

By Ciò significa che quando utilizzo il percorso completo per la posizione del file DB, funziona, quando uso "~/lodeDb.db" non funziona