企业库 配置文件

lifengguo 2008-12-12 04:10:56
我用的是企业库3.1,数据库连接字符串在使用过程中是会发生变化的,但是ShakeCheck.exe.config这个配置文件我在程序中修改了,用记事本打开了,确定已被修改。但是在程序中读取连接字符串时却没有发生变化,真是郁闷!

配置文件如下:
<configuration>
<configSections>
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</configSections>
<dataConfiguration defaultDatabase="SQLite" />
<connectionStrings>
<add name="SQLite" connectionString="Data Source=D:\sh\ShakeCheck\bin\Debug\AlarmData.s3db"
providerName="System.Data.SQLite" />
</connectionStrings>
</configuration>

修改配置文件的代码如下:

//修改
if( System.Configuration.ConfigurationManager.ConnectionStrings[ "SQLite" ] != null )
{
System.IO.FileInfo info = new System.IO.FileInfo( filePath );
//打开
Configuration config = ConfigurationManager.OpenExeConfiguration( info.DirectoryName + "\\ShakeCheck.exe" );
//删除
config.ConnectionStrings.ConnectionStrings.Remove( "SQLite" );
//新建连接
ConnectionStringSettings conn = new ConnectionStringSettings( "SQLite", "Data Source=" + txt_DataBaseFilePath.Text, "System.Data.SQLite" );
config.ConnectionStrings.ConnectionStrings.Add( conn );
config.Save();

ConfigurationManager.RefreshSection( "connectionStrings" );
}

实例化企业库数据库访问块的代码:
public DataAccess( string databaseConfigurationName )
{
db = DatabaseFactory.CreateDatabase( databaseConfigurationName );
}
...全文
107 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lifengguo 2008-12-16
  • 打赏
  • 举报
回复
// 保存系统配置
System.Configuration.Configuration config = System.Configuration.ConfigurationManager.OpenExeConfiguration( System.Configuration.ConfigurationUserLevel.None );
System.Configuration.ConfigurationSection connectionConfigurationSection = config.Sections[ "connectionStrings" ];
System.Configuration.ConnectionStringsSection connectionStringsSection = connectionConfigurationSection as System.Configuration.ConnectionStringsSection;
connectionStringsSection.ConnectionStrings["SQLite"].ConnectionString ="连接字符串";
config.Save();
// 刷新
System.Configuration.ConfigurationManager.RefreshSection( "dataConfiguration" );
System.Configuration.ConfigurationManager.RefreshSection( "connectionStrings" );
lifengguo 2008-12-13
  • 打赏
  • 举报
回复
我自己顶!
lifengguo 2008-12-12
  • 打赏
  • 举报
回复
public DataAccess( string databaseConfigurationName )
{
db = DatabaseFactory.CreateDatabase( databaseConfigurationName );
}

DataAccess db = new DataAccess( "SQLite" );

每次更新后读到的连接字符串都是老的,只有重新启动应该程序才能生效,这怎么回事啊?

ConfigurationManager.RefreshSection( "connectionStrings" );
即使这样也无效!
猿敲月下码 2008-12-12
  • 打赏
  • 举报
回复
有没保存啊

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧