c # строка подключения и конкатенация app.config - PullRequest
0 голосов
/ 30 мая 2018

У меня есть следующая строка подключения, через которую я подключаюсь к базе данных Access (.mdb), расположенной в подпапке внутри корневой папки моего приложения:

 OleDbConnection con = new OledbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + System.AppDomain.CurrentDomain.BaseDirectory() + "Data\rctts.mdb;Jet OLEDB:Database Password=mypassword;")

У меня вопрос, какпоместить строку подключения в файл app.config?Обычно я использую:

 <connectionStrings>
    <add name="Test" connectionString="Data Source=.;Initial Catalog=OmidPayamak;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>

Проблема, с которой я сталкиваюсь, заключается в том, что в строке подключения я выполняю некоторые конкатенации, а также использую System.AppDomain.CurrentDomain.BaseDirectory() для установки Data Source ... Как мне это сделать?та же конкатенация в app.config?Возможно ли это сделать?

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Вы можете попробовать следующее:

connectionString="Data Source=|DataDirectory|\rctts.mdb;Initial Catalog=OmidPayamak;Integrated Security=True"

и затем попытаться установить значение DataDirectory, как показано ниже:

var currentDomain = AppDomain.CurrentDomain;
var basePath = currentDomain.BaseDirectory;
currentDomain.SetData("DataDirectory", basePath+"\Data");

в соответствующем файле запуска вашего приложения.

0 голосов
/ 30 мая 2018

Хотя API-интерфейсы конфигурации не предоставляют никаких средств для манипуляции со строками соединения, вы можете поместить строку конфигурации «шаблон» в конфигурацию и выполнить остальную часть манипуляции в своем коде, используя string.Format:

Config:

<connectionStrings>
    <add name="Test" connectionString="Data Source={0}Data\rctts.mdb;Initial Catalog=OmidPayamak;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>

C # код:

string conStr = string.Format(
    ConfigurationManager.ConnectionStrings["Test"].ConnectionString
,   System.AppDomain.CurrentDomain.BaseDirectory()
);
...