使用System.Data.SQLite,如何使用相对路径在连接字符串中指定数据库文件

min*_*nty 11 c# sqlite connection-string system.data.sqlite

想要在不同的服务器上部署我的项目,我希望能够使用相对路径指定连接字符串.我似乎无法让它工作,并想知道它是否有一些技巧......?

AJ.*_*AJ. 6

一条建议

您可以在应用程序中构建绝对路径并将其传递给连接字符串.

因此,如果您知道数据库文件位于database应用程序文件夹的子文件夹中,您可以执行以下操作(C#):

    string relativePath = @"database\myfile.s3db";
    string currentPath;
    string absolutePath;
    string connectionString;

    currentPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
    absolutePath = System.IO.Path.Combine(currentPath,relativePath);

    connectionString = string.Format("DataSource={0}", absolutePath);

    SQLiteConnection cnn = new SQLiteConnection(connectionString);
Run Code Online (Sandbox Code Playgroud)

(有人可以纠正我如何获得当前路径).

  • Yuk,不要使用反射命名空间来获取基本路径。使用:`AppDomain.CurrentDomain.BaseDirectory` (3认同)

tre*_*ndl 6

这个怎么样?

"Data Source=|DataDirectory|mydb.db;..."
Run Code Online (Sandbox Code Playgroud)

我相信|DataDirectory|指向您的应用所在的目录.我使用NHibernate,它适用于以下内容:

<add key="hibernate.connection.connection_string"
       value="Data Source=|DataDirectory|mydb.db;Version=3;Compress=False;synchronous=OFF;" >
Run Code Online (Sandbox Code Playgroud)