当前位置导航:炫浪网>>网络学院>>编程开发>>Visual C#教程

c#中的数据库访问工厂

上午看到一个兄弟的文章,很辛苦的想实现不改代码只改配置来访问不同类型的数据库,自己去实现工厂模式。精神可嘉,但是殊不知c#已经自己为不同类型数据库的访问做了一个工厂。在这里我就把使用工厂的例子贴出来供不知道的兄弟参考一下,高手们可以忽略了。

      首先是配置文件:其中的providerName就是指定的不同数据库类型

<connectionStrings>
        <add name="..."  connectionString=" ..." providerName="System.Data.OleDb" />

        <add name="..."  connectionString=" ..." providerName="System.Data.SqlClient" />
    </connectionStrings>

      下面看一下使用工厂的这个类:

     class DataBaseFac
    {
        private DbConnection cnn;//抽象类型
        private DbCommand cmd;//抽象类型
        private DbProviderFactory provider;
        public DataBaseFac()
        {

            //从配置文件中取出标示数据库类型的字符串
            string providerName = ConfigurationManager.ConnectionStrings[1].ProviderName;

            //根据上一部的结果工厂创建一个对应的实例
            provider = DbProviderFactories.GetFactory(providerName);

            //使用该实例就可以创建对应的connection,command 和adapater对象了

            //调试的时候可以看到这几个对象都变成了相应于数据库类型的
            cnn = provider.CreateConnection();
            cnn.ConnectionString = ConfigurationManager.ConnectionStrings[1].ConnectionString;
            cmd = provider.CreateCommand();
            cmd.Connection = cnn;
        }

        //执行一次查询,返回数据表

        public DataTable ExcuteQuery(string queryString)
        {
            DataTable result = new DataTable();
            DbDataAdapter adapter = provider.CreateDataAdapter();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = queryString;
            adapter.SelectCommand = cmd;
            try
            {
                cnn.Open();
                adapter.Fill(result);
            }
            catch
            {
                result = null;
            }
            finally
            {
                cnn.Close();
            }
            return result;

        }

        以上只是简单的应用,并没有做比较高级的封装,只供不知道的兄弟参考。

        顺便说说,上午看到那个兄弟的文章用swith case语句来实现

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接