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

Posted

技术标签:

【中文标题】c# 连接字符串和连接app.config【英文标题】:c# connection string and concatenation app.config 【发布时间】:2018-11-09 10:19:16 【问题描述】:

我有以下连接字符串,我通过它连接到位于我的应用程序根文件夹内的子文件夹中的 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 中进行相同的连接?有可能吗?

【问题讨论】:

这看起来像 VB.Net 连接,而不是 C#。 @juharr ,现在看起来像 c# :) 【参考方案1】:

您可以尝试以下方法:

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

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

【讨论】:

别介意我问,我在这里没有看到 app.config 部分? 应用配置部分是第一个。在应用配置中,您只需将“Data Source=...”替换为上述内容。 您能解释一下|Data Directory| 在这里的含义吗?它是否像期望值的变量一样工作? @zackraiyan 没错!它是可以通过 AppDomain 设置的变量。请检查此blogs.msdn.microsoft.com/smartclientdata/2005/08/26/… @Christos 了解【参考方案2】:

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

配置:

<connectionStrings>
    <add name="Test" connectionString="Data Source=0Data\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()
);

【讨论】:

我收到警告:Runtime error may occur when converting 'ConnectionStringSetting' to 'IFormatProvider',我应该担心吗? @zackraiyan 没错 - 我忘了添加 .ConnectionString。当我不尝试在本地编译东西时,就会发生这种情况。谢谢!

以上是关于c# 连接字符串和连接app.config的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中使用 app.config 文件定义连接字符串 [重复]

如何在 C# 中更新 app.config 连接字符串数据源值?

C# ConfigurationManager 从 app.config 检索错误的连接字符串

C#:需要帮助加密 app.config 中的连接字符串并将其保存在那里并解密并使用?

App.Config 中的实体框架连接字符串

在非 ASP.Net 应用程序中加密连接字符串