繁体   English   中英

动态更改SQL Server数据库连接

[英]Change SQL Server Database Connection Dynamically

每当执行select,insert等语句时,我都有一个连接类可用于连接数据库。 我在类中对连接字符串进行了硬编码。

问题是,如果必须更改数据库服务器,则必须更改每个应用程序上的字符串,然后重新发布。

这是我的连接字符串:

var cnnString = string.Format("user id=sa;" +
                                          "password=pw;server=database\\instance;" +
                                          "database=dbase; " +
                                          "connection timeout=10");

我曾考虑过创建一个表并在其中存储数据库信息,但是如果不能使用连接类从数据库中进行选择,那将无济于事。

有没有办法动态地做到这一点?

将连接字符串放在.config文件中,并使用ConfigurationManager类: https : //msdn.microsoft.com/zh-cn/library/system.configuration.configurationmanager%28v=vs.110%29.aspx

将所有连接字符串加载到数组/字典中,然后在需要使用适当的连接字符串创建连接时进行加载。

您可以使用您的Appconfig文件

<appSettings>    
    <add key="dbserver" value="IP_SERVER" />
    <add key="dbname" value="DB_NAME" />
    <add key="dbuser" value="sa" />
    <add key="dbpass" value="PASSWORD" />
 </appSettings>

然后用它来创建弦锥

string strConexion = "Data Source='" + ConfigurationManager.AppSettings["dbserver"] + "';" +
                                "Initial Catalog='" + ConfigurationManager.AppSettings["dbname"] + "';" +
                                "User Id='" + ConfigurationManager.AppSettings["dbuser"] + "';" +
                                "Password='" + ConfigurationManager.AppSettings["dbpass"] + "';";

您可以使用此表单来更改配置值

//打开可执行文件的App.Config

    System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

        config.AppSettings.Settings.Remove("dbserver");
        config.AppSettings.Settings.Remove("dbname");
        config.AppSettings.Settings.Remove("dbuser");
        config.AppSettings.Settings.Remove("dbpass");

        // Add an Application Setting.
        config.AppSettings.Settings.Add("dbserver", txtDBServer.Text);
        config.AppSettings.Settings.Add("dbname", txtDBName.Text);
        config.AppSettings.Settings.Add("dbuser", txtDBUser.Text);
        config.AppSettings.Settings.Add("dbpass", txtDBPassword.Text);

将更改保存在App.config文件中。

 config.Save(ConfigurationSaveMode.Modified);

强制重新加载已更改的部分。

ConfigurationManager.RefreshSection("appSettings");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM