Помогите со строкой подключения - PullRequest
2 голосов
/ 20 марта 2010

Итак, я пытаюсь подключиться к своей базе данных в указанном месте, и соединение устанавливается, пока база данных находится в том же месте, указанном в поле DataSource, но что, если я попытался распространить свое приложение, путь к файлу изменится и приведет к ошибкам, которых я хочу избежать. Вот мое отношение:

string connstring = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\PC1\Documents\Visual Studio 2008\Projects\Test\Test\bin\Debug\MyDatabase01.accdb;Persist Security Info=true";

Можно ли в любом случае определить местоположение источника данных в той же папке?

Ответы [ 2 ]

3 голосов
/ 20 марта 2010

Есть несколько вещей, о которых я могу подумать:

  1. Сохраните базу данных рядом с приложением, а затем используйте относительный путь к файлу в строке подключения (для этого используется строка подстановки, встроенная в ADO.Net - см. здесь для получения дополнительной информации) :

    string connstring = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\MyDatabase01.accdb;Persist Security Info=true";
    
  2. Сохраните строку подключения в файле конфигурации. Затем это можно изменить, когда ваше приложение запускается на компьютере, где база данных находится в другом месте.

  3. Попросите ваше приложение сначала указать местоположение базы данных, а затем сохраните это местоположение в виде файла настроек для использования в строке подключения.

Если вы распространяете свою базу данных вместе с приложением, вариант 1 является лучшим. Если нет, я бы выбрал вариант 3.

2 голосов
/ 20 марта 2010

Если вы не можете использовать относительный путь в строке подключения, вы можете сгенерировать его во время выполнения что-то вроде:

string connstring = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Persist Security Info=true", Path.Combine(Directory.GetCurrentDirectory(), "MyDatabase01.accdb"));
...