最近学习了一下设计模式,便尝试用C#对数据库的访问操作采用抽象工厂的模式实现一下,其中与标准的模式略有不同,加入了一些自己的想法,希望大家批评指正,代码共分为6个类:

(1)AbstractDbFactory.cs
用C#实现的数据库抽象工厂 (转载自chrch)using System;
用C#实现的数据库抽象工厂 (转载自chrch)
using System.Data;
用C#实现的数据库抽象工厂 (转载自chrch)
用C#实现的数据库抽象工厂 (转载自chrch)
namespace DbService


(2)Factory.cs
用C#实现的数据库抽象工厂 (转载自chrch)using System;
用C#实现的数据库抽象工厂 (转载自chrch)
using System.Configuration;
用C#实现的数据库抽象工厂 (转载自chrch)
用C#实现的数据库抽象工厂 (转载自chrch)
namespace DbService

以下3个类分别是Factory针对SqlServer专用连接、OleDb连接和Odbc连接时的具体实现:
(3)SqlFactory.cs
用C#实现的数据库抽象工厂 (转载自chrch)using System;
用C#实现的数据库抽象工厂 (转载自chrch)
using System.Data;
用C#实现的数据库抽象工厂 (转载自chrch)
using System.Data.SqlClient;
用C#实现的数据库抽象工厂 (转载自chrch)
using System.Configuration;
用C#实现的数据库抽象工厂 (转载自chrch)
用C#实现的数据库抽象工厂 (转载自chrch)
namespace DbService

(4)OleDbFactory.cs
用C#实现的数据库抽象工厂 (转载自chrch)using System;
用C#实现的数据库抽象工厂 (转载自chrch)
using System.Data;
用C#实现的数据库抽象工厂 (转载自chrch)
using System.Data.OleDb;
用C#实现的数据库抽象工厂 (转载自chrch)
using System.Configuration;
用C#实现的数据库抽象工厂 (转载自chrch)
用C#实现的数据库抽象工厂 (转载自chrch)
namespace DbService

(5)OdbcFactory.cs
用C#实现的数据库抽象工厂 (转载自chrch)using System;
用C#实现的数据库抽象工厂 (转载自chrch)
using System.Data;
用C#实现的数据库抽象工厂 (转载自chrch)
using System.Data.Odbc;
用C#实现的数据库抽象工厂 (转载自chrch)
using System.Configuration;
用C#实现的数据库抽象工厂 (转载自chrch)
用C#实现的数据库抽象工厂 (转载自chrch)
namespace DbService

以下是在应用时真正要调用到的类:
(6)DbAccess.cs
用C#实现的数据库抽象工厂 (转载自chrch)using System;
用C#实现的数据库抽象工厂 (转载自chrch)
using System.Data;
用C#实现的数据库抽象工厂 (转载自chrch)
用C#实现的数据库抽象工厂 (转载自chrch)
namespace DbService

最后一步,在Web.config中的根结点configuration下增加一些关于数据库连接字符串的变量:

用C#实现的数据库抽象工厂 (转载自chrch)<appSettings>
用C#实现的数据库抽象工厂 (转载自chrch) 
用C#实现的数据库抽象工厂 (转载自chrch) 
<add key="DatabaseType" value="SqlServer" />
用C#实现的数据库抽象工厂 (转载自chrch) 
用C#实现的数据库抽象工厂 (转载自chrch) 
<add key="SqlServerServer" value="Ricky" />
用C#实现的数据库抽象工厂 (转载自chrch) 
<add key="SqlServerDatabase" value="test" />
用C#实现的数据库抽象工厂 (转载自chrch) 
<add key="SqlServerUid" value="sa" />
用C#实现的数据库抽象工厂 (转载自chrch) 
<add key="SqlServerPwd" value="henhaoba" />
用C#实现的数据库抽象工厂 (转载自chrch) 
用C#实现的数据库抽象工厂 (转载自chrch) 
<add key="OleDbProvider" value="Microsoft.jet.oledb.4.0" />
用C#实现的数据库抽象工厂 (转载自chrch) 
<add key="OleDbDataSource" value="D:\test.mdb" />
用C#实现的数据库抽象工厂 (转载自chrch) 
用C#实现的数据库抽象工厂 (转载自chrch) 
<add key="OdbcDriver" value="Microsoft Access Driver (*.mdb)" />
用C#实现的数据库抽象工厂 (转载自chrch) 
<add key="OdbcDBQ" value="d:\test.mdb" />
用C#实现的数据库抽象工厂 (转载自chrch)      
用C#实现的数据库抽象工厂 (转载自chrch)
</appSettings>
用C#实现的数据库抽象工厂 (转载自chrch)

     现在一切OK,大家可以通过改变Web.config中的变量来使用不同的数据库连接方式(SqlServer专用连接、OleDb连接和Odbc连接)连接不同的数据库,同时整个使用仍通过DbAccess,不受任何影响。欢迎大家批评指正:)

相关文章:

  • 2021-11-25
  • 2021-08-04
  • 2022-01-14
  • 2021-09-21
  • 2021-05-24
  • 2021-06-07
  • 2022-01-11
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-06-28
  • 2022-12-23
  • 2021-12-12
  • 2022-12-23
  • 2021-05-25
相关资源
相似解决方案