views:

739

answers:

1

I'm currently storing my sqlite db file in the App_Data folder as per ASP.NET best pattern and practices.

Currently I'm using the following in the webconfig:

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

and the following in code:

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

//...

//where path = |DataDirectory|MyDB

It causes sqlite to make a NEW database (with no tables in it), and thus none of my data access calls work, since they aren't finding the table names. How do I reference the sqlite db file in the App_Data folder from my WebApplication code??

Thanks!

+2  A: 

Use Server.MapPath to your db file. So it would be something like

Server.MapPath(@"~\App_Data\Your.db");
David Basarab
This is probably a silly question, but how would you do this from a file that isn't a "CodeBehind" file, where you don't have the Server object? Do you have to pass the server object, or the path from a Code-Behind file?
kdmurray
@kdmurray - you can use this method: http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.mappath.aspx
Ben Laan
Thanks Ben. I managed to find a solution to this myself too, by passing the HttpContext object to the other class:MyClass c = new MyClass();c.myFunc(this.Context);
kdmurray