c#连接字符串和连接app.config

时间:2018-05-30 14:03:44

标签: c# connection-string app-config

我有以下连接字符串,通过它连接到位于我的应用程序的根文件夹内的子文件夹中的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 :(得分:3)

虽然配置API不提供为您操作连接字符串的工具,但您可以将连接字符串“template”放入配置中,并使用string.Format在代码中执行其余操作:

配置:

<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()
);

答案 1 :(得分:3)

您可以尝试以下方法:

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");

在应用程序的相应启动文件中。