c# - 如何在 app.confg 中的 connectionString 中使用变量?
问题描述
我想在我的app.confg
.
<configuration>
<appSetting>
<add key="user" value="root"/>
<add key="pass" value="root"/>
</appSetting>
<connectionStrings>
<add name="mysql"
connectionString="datasource=localhost; port=3306; username={user}; password={pass};"
providerName="MySql.Data.MySqlClient"/>
</connectionStrings>
</configuration>
当我得到使用的价值mysql
时
ConfigurationManager.ConnectionStrings["mysql"].ConnectionString
它返回
datasource=localhost; port=3306; username={user}; password={pass};
我的目标是让这个返回:
datasource=localhost; port=3306; username=root; password=root;
提前致谢
解决方案
您可以将连接字符串更改为:
<add name="mysql"
connectionString="datasource=localhost; port=3306; username={0}; password={1};"
providerName="MySql.Data.MySqlClient"/>
然后在您的 C# 代码中,您可以使用string.Format
方法来替换值:
string.Format(ConfigurationManager.ConnectionStrings["mysql"].ConnectionString, "root", "root");
不建议使用这种解决方案,您应该将所有连接字符串保留在配置文件中。如果您有多个用于不同操作或用户的连接字符串。您应该在配置文件中创建多个连接字符串。每个连接都有不同的名称,您将通过它的名称来调用连接。在你的 CS 代码中保留用户名和密码是非常非常非常糟糕的。
在这种情况下,您的配置文件将如下所示:
<configuration>
<appSetting>
<add key="user" value="root"/>
<add key="pass" value="root"/>
</appSetting>
<connectionStrings>
<add name="admin"
connectionString="datasource=localhost; port=3306; username=adimn; password=aVeryBigComplexPassword;"
providerName="MySql.Data.MySqlClient"/>
<add name="user"
connectionString="datasource=localhost; port=3306; username=OnlyReader; password=otherVeryBigComplexPassword;"
providerName="MySql.Data.MySqlClient"/>
</connectionStrings>
</configuration>
然后在您的代码中,您可以像这样轻松获取连接字符串:
var conn = ConfigurationManager.ConnectionStrings["admin"].ConnectionString;
或者
var conn = ConfigurationManager.ConnectionStrings["user"].ConnectionString;
推荐阅读
- css - 如何从以前的兄弟姐妹中删除边框?
- vba - 比较两个 VBA 代码以获取邮件项的 SMTP 地址
- angular - 如何在选择下显示选项(角材料 7)?
- r - curl_fetch_disk 关闭且没有错误消息
- information-retrieval - 在 LSA 中形成查询向量
- c++ - 我可以通过 boost::interprocess::message_queue 发送 C++ 类对象吗?
- android - 在片段上滚动时如何隐藏工具栏
- reactjs - 开玩笑 - 如何测试反应方法的输出是否正确?
- c# - 我需要将美国英语性别特定文本从一种性别转换为另一种性别或使性别中立
- python - Authlib jwt 令牌解码在函数内部不起作用