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语句来实现不同的创建connection ,command 和adapater的方法,然后说是工厂方法的实现。其实这是完全错误的,工厂模式的提出就是为了避免这么多swith case造成的麻烦。这次就为大家简单介绍到这,以后有时间我会把几个常用的模式的提出原因和应用场合总结一下用C#做几个例子给大家做一个详细的介绍,供大家学习参考。

【编辑推荐】

  1. 数据库安全防护几点介绍
  2. 如何减少数据库管理开销 发挥最大功能
  3. 带迷茫的你走出学习数据库的囧途
责任编辑:迎迎 来源: 希赛网
相关推荐

2009-08-12 14:27:36

访问MySQL数据库C# ODBC

2009-08-28 15:16:32

C#实现对数据库访问

2024-04-18 09:56:16

2009-08-11 13:35:13

C# Berkeley

2009-08-07 15:33:11

C#数据库编程

2009-08-11 14:51:47

C#读取Excel中数

2009-03-19 10:08:09

C#数据库查询

2009-08-12 14:23:01

C#连接MySql数据

2010-10-26 15:21:11

连接Oracle数据库

2009-08-17 17:42:57

C#数据库操作类

2009-08-25 14:05:06

C#连接数据库代码

2009-08-07 16:19:00

C#下数据库编程

2009-07-31 17:01:21

C#存取Access数

2009-08-06 18:10:06

C#数据库事务

2009-09-04 17:23:21

C#数据库连接对象

2009-08-24 18:09:13

C#调用Oracle数

2009-08-25 12:50:32

数据库常用C#代码

2009-08-07 16:19:00

C#下数据库编程

2009-08-04 09:22:26

C#工厂模式

2009-08-18 11:23:11

点赞
收藏

51CTO技术栈公众号