С System.Data.SQLite, как указать файл базы данных в строке подключения, используя относительный путь - PullRequest
11 голосов
/ 24 ноября 2008

Желая развернуть свой проект на разных серверах, я бы предпочел иметь возможность указать строку подключения, используя относительный путь. Я не могу заставить это работать и хочу знать, есть ли какая-то хитрость ...?

Ответы [ 3 ]

6 голосов
/ 28 декабря 2008

Как насчет этого?

"Data Source=|DataDirectory|mydb.db;..."

Я считаю, |DataDirectory| указывает на каталог, в котором находится ваше приложение. Я использую NHibernate, и он работает со следующим:

<add key="hibernate.connection.connection_string"
       value="Data Source=|DataDirectory|mydb.db;Version=3;Compress=False;synchronous=OFF;" >
6 голосов
/ 24 ноября 2008

предложение

Вы можете построить абсолютный путь в приложении и передать его в строке подключения.

Итак, если вы знаете, что файл базы данных находится в подпапке 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);

(Возможно, кто-то может поправить меня о том, как получить текущий путь).

2 голосов
/ 06 декабря 2008

Как это:

String currentPath = System.IO.Path.GetDirectoryName (Application.ExecutablePath);

...