首页 > 解决方案 > 如何使用变量传递 ConnectionString 参数?

问题描述

我有一个 ConnectionString,我想用 .txt 文件中的值传递它的值(数据源、数据库、用户 ID、密码),我需要读取它们,然后将它们传递给 connectionString,但我很困惑我应该怎么做做这个。

在我的程序中,我有一个 Helper 类来返回 connectionString

public static class Helper
{
    public static string ConnectionString(string name)
    {
        return ConfigurationManager.ConnectionStrings[name].ConnectionString;
    }
}

这就是我调用 connectionString 的方式,以便我可以访问数据库数据

using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(Helper.ConnectionString("Hotel")))
{
     connection.Execute($"INSERT INTO dbo.Registos_Cancelados(Nome, Telemovel, Data) VALUES(@Nome, @Telemovel, @Data)", new { Nome = nome, Telemovel = telemovel, Data = data });
}

我有一个包含值的文本文件

"DataSourceName"
"DataBaseName"
"User IDName"
"PasswordName"

我希望它们在连接字符串中。

<connectionStrings>
    <add name="Hotel" connectionString="DataSource="DataSourceName";Database="DatabaseName";User Id="UserIdName";Password="PasswordName""
        providerName="System.Data.SqlClient" />
</connectionStrings>

标签: c#connection-string

解决方案


您正在使用 SqlClient,因此:您最好的选择是SqlConnectionStringBuilder

var cb = new SqlConnectionStringBuilder(theBaseString);
cb.DataSource = dataSourceName;
cb.InitialCatalog = dataBaseName;
cb.UserID = userId;
cb.Password = password;
var connectionString = cb.ConnectionString;

如果您没有模板字符串 ( theBaseString),请new SqlConnectionStringBuilder()改用。

在这里使用的好处SqlConnectionStringBuilder是它知道所有关于非平凡值、保留字符等的转义规则。


推荐阅读