使用 C# 以编程方式更改 MySQL 连接字符串
本文关键字:MySQL 连接 字符串 方式更 编程 使用 | 更新日期: 2023-09-27 18:36:28
我想在运行时更改 app.set 连接字符串。我有一些代码可以更改它,但我不能这样做。运行时未出现错误。但是在执行过程中没有任何变化。
这是我的部分代码:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="Punch_Uploader.Properties.Settings.testConnectionString"
connectionString="server=localhost;User Id=root;password=test123;database=test"
providerName="MySql.Data.MySqlClient" />
<add name="Punch_Uploader.Properties.Settings.testConnectionString1"
connectionString="server=172.23.2.52;User Id=root;password=test123;database=test"
providerName="MySql.Data.MySqlClient" />
</connectionStrings>
</configuration>
和:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.ConnectionStrings.ConnectionStrings.Add(
new ConnectionStringSettings("Punch_Uploader.Properties.Settings.testConnectionString2",
String.Format(
"server={0};Port={1}; database={2};User Id={3};password={4};providerName={5}",
"172.23.2.32", "3306", "test", "root", "test123", "MySql.Data.MySqlClient")
)
);
config.Save(ConfigurationSaveMode.Modified, true);
ConfigurationManager.RefreshSection("connectionStrings");
MessageBox.Show(ConfigurationManager
.ConnectionStrings["Punch_Uploader.Properties.Settings.testConnectionString2"]
.ConnectionString);
上面的代码对我不起作用。
请帮我解决这个问题。
ConnectionStringSettings settings =
ConfigurationManager.ConnectionStrings["Punch_Uploader.Properties.Settings.testConnectionString"];
string connectString = settings.ConnectionString;
SqlConnectionStringBuilder builder =
new SqlConnectionStringBuilder(connectString);
builder.DataSource = "172.23.2.52:3306";
builder.InitialCatalog = "test";
builder.UserID = "root";
builder.Password = "test123";
如上一个答案的评论中所述,我可以确认此方法有效,因为我之前曾使用它在不同的数据库环境之间切换。
连接字符串是只读的。若要更改连接字符串,需要手动将更改保存回配置文件,这将导致应用程序重新启动。
编辑:快速搜索,我发现这个(可能会有所帮助):运行时的连接字符串
试试这个,
Configuration webConfig = WebConfigurationManager.OpenWebConfiguration("~");
ConnectionStringsSection section = webConfig.GetSection("connectionStrings") as
ConnectionStringsSection;
if (section != null)
{
section.ConnectionStrings["NameTheCnStr"].ConnectionString = "New Connection string here";
webConfig.Save();
}
尝试此代码
private void UpdateConnectionString(string ConfigPath)
{
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(ConfigPath);
XmlNode parentNode = xmlDocument.DocumentElement;
if (parentNode.Name == "connectionStrings")
{
foreach (XmlNode childNode in parentNode.ChildNodes)
{
if (childNode.Name == "add" && childNode.Attributes["name"].Value=="Punch_Uploader.Properties.Settings.testConnectionString")
{
string sqlConnectionString =childNode.Attributes["connectionString"].Value;
SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder(sqlConnectionString);
sqlBuilder.InitialCatalog = "yourDatabaseName";
sqlBuilder.IntegratedSecurity = true;
sqlBuilder.Password = "";
//Change any other attributes using the sqlBuilder object
childNode.Attributes["connectionString"].Value = sqlBuilder.ConnectionString;
}
}
}
xmlDocument.Save(ConfigPath);
}
configPath 是来自 Web.config 的连接字符串的路径
string configPath = ConfigurationManager.ConnectionStrings["Punch_Uploader.Properties.Settings.testConnectionString"].ConnectionString;