首先在项目的属性文件夹下使用 Settings.settings 配置连接字符串,我这里配置了一个 Access数据库
连接保存后VS2005自动生成 app.config文件(修改 Settings.settings配置此文件会自动更新),内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="frmSignIn.Properties.Settings.DBConnString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=F:\kaifa\frmSignIn\appData\dbqx.mdb;Persist SecurityInfo=True;Jet OLEDB:Database Password=123"
providerName="System.Data.OleDb" />
</connectionStrings>
</configuration>
这个跟旧式的 key value 样式是不同的,如何解析这个配置文件呢?
我构建了一个数据库操作类如下:
class DBOperater : IDisposable
{
protected string connectString;
protected OleDbConnection mConn;
protected ConnectionStringSettings s;
public DBOperater()
{
s = ConfigurationManager.ConnectionStrings["frmSignIn.Properties.Settings.DBConnString"];
}
~DBOperater()
{try
{
if (mConn != null)
mConn.Close();
}
catch (Exception e)
{
}
try
{
Dispose();
}
catch { }; }
/// <summary>
/// 打开数据库连接
/// </summary>
protected void Open()
{
if (mConn == null)
{
try
{
//mConn = new OleDbConnection(connectString);
mConn = new OleDbConnection(s.ConnectionString);
}
catch (Exception e)
{
}
}
if (mConn.State.Equals(ConnectionState.Closed))
{
try
{
mConn.Open();
}
catch(Exception e)
{
}
}
}
#region IDisposable 成员
public void Dispose()
{
try
{
if (mConn != null)
{
mConn.Dispose();
mConn = null;
}
}
catch (Exception e)
{
}
}
#endregion
这样可以完成对app.config的解析
我实现IDisposable是为了释放资源,在这个类的析构函数中调用此接口的实现。
搜索到有更简洁,更通用的方法
System.Configuration.ConnectionStringSettings s = System.Configuration.ConfigurationManager.ConnectionStrings["NorthwindConnectionString1"];
DbProviderFactory f = DbProviderFactories.GetFactory(s.ProviderName);
using (DbConnection conn = f.CreateConnection())
{
conn.ConnectionString = s.ConnectionString;
conn.Open();
DataTable t = conn.GetSchema("Tables");
t.WriteXml("tables.xml");
}
}
这里有两个优点:
一:using 语句。通过使用这个语句,在代码段调用完毕释放资源。
二:基类的使用(工厂方法):DbProviderFactory f = DbProviderFactories.GetFactory(s.ProviderName);这也说明了连接字符串中的ProviderName的用处。
参考链接:
http://www.cnblogs.com/renmin/archive/2005/10/18/257258.html