2009-09-14 12 views
8

Ich speichere gerade meine sqlite db-Datei im App_Data-Ordner nach den besten ASP.NET-Mustern und -Praktiken.Wie referenziere ich die Sqlite-DB-Datei im App_Data-Ordner für meine ASP.NET-Webanwendung?

Derzeit verwende ich folgendes in der webconfig:

<connectionStrings> 
    <add name="sqlite" 
     connectionString="Data Source=|DataDirectory|MyDB; Version=3;" /> 
    </connectionStrings> 

und den folgenden in Code:

 public SqliteDAO(string path) 
     { 
      Connection = new System.Data.SQLite.SQLiteConnection(path); 
     } 

//... 

//where path = |DataDirectory|MyDB 

Es bewirkt, dass SQLite eine neue Datenbank machen (ohne Tabellen in it) und daher funktioniert keiner meiner Datenzugriffsaufrufe, da sie die Tabellennamen nicht finden. Wie referenziere ich die sqlite db-Datei im App_Data-Ordner von meinem WebApplication-Code?

Danke!

Antwort

9

Verwenden Sie Server.MapPath zu Ihrer Datenbankdatei. So wäre es so etwas wie

Server.MapPath(@"~\App_Data\Your.db"); 
+1

Dies ist wahrscheinlich eine dumme Frage, aber wie würden Sie tun dies aus einer Datei, die keine „Codebehind“ Datei ist, wo Sie nicht das Server-Objekt haben? Müssen Sie das Server-Objekt oder den Pfad einer Code-Behind-Datei übergeben? – kdmurray

+1

@ kdmurray - Sie können diese Methode verwenden: http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.mappath.aspx –

+0

Dank Ben. Ich habe auch selbst eine Lösung gefunden, indem ich das HttpContext-Objekt an die andere Klasse übergeben habe: MyClass c = new MyClass(); c.myFunc (this.Context); – kdmurray