首先在项目的属性文件夹下使用 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

posted on 2010-01-02 23:00  秋波渡  阅读(2679)  评论(0编辑  收藏  举报