无法在app.config中添加/更新连接字符串 [英] unable to add/update connection string in app.config
本文介绍了无法在app.config中添加/更新连接字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用以下代码在我的app.config文件中添加新的连接字符串,但它没有更新,也没有引发任何错误.
当我执行此代码时,消息框仅显示两个连接字符串,并且app.config文件也未更新
Hi,
I am using the below code to add a new connection string in my app.config file but it is not updating nor it is throwing any error.
When i execute this code the message box displaysonly the firs two connection strings and app.config file is also not updated
try
{
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
//ConnectionStringSettingsCollection connections = ConfigurationManager.ConnectionStrings;
//ConfigurationPermission cp = new ConfigurationPermission(System.Security.Permissions.PermissionState.Unrestricted);
ConnectionStringSettings css = new ConnectionStringSettings("cString3", "abcdefxyz");
config.ConnectionStrings.ConnectionStrings.Add(css);
config.Save(ConfigurationSaveMode.Minimal);
ConfigurationManager.RefreshSection("connectionStrings");
foreach (ConnectionStringSettings connection in connections)
{
string str = connection.Name;
string val = connection.ConnectionString;
MessageBox.Show(str + " " + val);
//textBox1.Text = str;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
我的xml文件是
and my xml file is
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Setting1" value="1" />
<add key="Setting2" value="2" />
</appSettings>
<connectionStrings>
<add name="cString1" connectionString="The first connection string is correct"/>
<add name="cString2" connectionString="The second connection string"/>
</connectionStrings>
</configuration>
推荐答案
看看 ^ ]
最好的问候
Espen Harlinn
Have a look at Read/Write App.Config File with .NET 2.0[^]
Best regards
Espen Harlinn
检查我的文章.
在C#运行时期间在App.Config文件中配置连接字符串 [ ^ ]
Check my article.
Configuring a Connection String in the App.Config File During Runtime in C#[^]
try
{
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
//ConnectionStringSettingsCollection connections = ConfigurationManager.ConnectionStrings;
//ConfigurationPermission cp = new ConfigurationPermission(System.Security.Permissions.PermissionState.Unrestricted);
ConnectionStringSettings css = new ConnectionStringSettings("cString3", "abcdefxyz");
config.ConnectionStrings.ConnectionStrings.Add(css);
config.Save();
ConfigurationManager.RefreshSection("connectionStrings"); //May be this is unnecessary.
foreach (ConnectionStringSettings connection in connections)
{
string str = connection.Name;
string val = connection.ConnectionString;
MessageBox.Show(str + " " + val);
//textBox1.Text = str;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
因此,我已经在我的一个项目(Enterprise Library 4.1)中实现了此功能:
So, I have implemented this on one of my projects (Enterprise Library 4.1):
private static void CopyCurrentDataConfiguration(IDataConfiguration dataConfig)
{
// Load the configuration from the configuration file
var configSource = ConfigurationSourceFactory.Create();
// Retrieve the default datasource name
var dataConfigurationSection = (DatabaseSettings)configSource.GetSection(
DatabaseSettings.SectionName);
var defaultDatabaseName = dataConfigurationSection.DefaultDatabase;
CopyConnectionStrings(dataConfig, defaultDatabaseName);
}
private static void CopyConnectionStrings(IDataConfiguration dataConfig,string defaultDatabaseName)
{
// Add the configurations from our application config file to the builder
foreach (ConnectionStringSettings settings in ConfigurationManager.ConnectionStrings)
{
try
{
var configuredDatabase = dataConfig
.ForDatabaseNamed(settings.Name)
.ThatIs
.AnotherDatabaseType(settings.ProviderName);
if (settings.Name.Equals(defaultDatabaseName))
{
configuredDatabase.AsDefault();
}
}
catch { }
}
}
public static void AddNewConnectionString(string databaseName, string connString)
{
var builder = new ConfigurationSourceBuilder();
var dataConfig = builder.ConfigureData();
CopyCurrentDataConfiguration(dataConfig);
// Add our database connections to the builder
dataConfig
.ForDatabaseNamed(databaseName)
.ThatIs
.AnotherDatabaseType("Oracle.DataAccess.Client")
.WithConnectionString(connString)
.AsDefault();
string conn = "your_connection_string";
// Create a new configuration source, update it with the builder and make it the current configuration
var newConfigSource = new DictionaryConfigurationSource();
builder.UpdateConfigurationWithReplace(newConfigSource);
EnterpriseLibraryContainer.Current = EnterpriseLibraryContainer.CreateDefaultContainer(newConfigSource);
}
希望对您有所帮助.
Hope it helps.
这篇关于无法在app.config中添加/更新连接字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文