C# 泛型操作数据库切换实践

开发 后端
C# 泛型操作数据库切换实践向你讲述了如何通过C# 泛型达到数据库切换切换的目的,希望对你了解和学习C# 泛型有所帮助。

C# 泛型操作数据库切换实践的一个项目,最开始选用的是 MySql 5.0 数据库,项目提交之后,对方要求换成 MS SQLServer 2000,还好数据层操作基本采用的是标准的SQL语句,也未使用存储过程,于是将原有的数据接入层代码改写成泛型类,只改了不到一百行代码,具体的SQL操作语句一句未动,便实现了数据库之间的切换。下面简述C#泛型操作数据库切换实践的具体过程:

数据库不是很复杂,因此我采用了两个类:

(1) DataProvider 泛型类

  1. public class DataProvider﹤ConnType, CmdType﹥  
  2. where ConnType : IDbConnection, new()  
  3. where CmdType : IDbCommand,new ()  
  4. {  
  5.  

提供数据库表的Insert,Update,Select,Delete操作。因为 IDbCommand能够由 IDbConnection 获取,其实只需要有一个泛型参数ConnType 的,不过这样以来,具体的代码改动比较大,偶就采用了两个泛型参数。

(2)ConnectionPool 泛型类

  1. public class ConnectionPool﹤T﹥  
  2. where T : IDbConnection,new ()  
  3. {  
  4.  

最开始没在MySql 5.0 中找到对数据库连接池的支持,于是自己写了一个简单的数据库连接池。

C# 泛型操作数据库切换的实现:

下面,就是采用 C# 的NB语法――using:

(1)如果使用 MySql 数据库:

  1. using DataProvider =   
  2.  
  3. DataProvider﹤MySql.Data.MySqlClient.MySqlConnection,   
  4.  
  5. MySql.Data.MySqlClient.MySqlCommand﹥; 

(2)如果使用 SQLServer 数据库:

  1. using DataProvider =   
  2.  
  3. DataProvider﹤System.Data.SqlClient.SqlConnection,  
  4.  
  5.  System.Data.SqlClient.SqlCommand﹥; 

这样一来,其它地方的代码一句都不用动了。

懒惰是程序员的美德。我的一台电脑上装的是 SQLServer 2000数据库,一台电脑上装的是 MySql数据库,我经常一会在这台电脑上干活,一会在另外一台电脑上干活,两个电脑上的代码应该一致啊。因此,采用预编译指令:

  1. #if MSSQLSERVER  
  2. using System.Data.SqlClient;  
  3. using DataProvider = DataProvider﹤System.Data.SqlClient.SqlConnection, System.Data.SqlClient.SqlCommand﹥;  
  4. #elif MYSQL  
  5. using MySql.Data;  
  6. using DataProvider = DataProvider﹤MySql.Data.MySqlClient.MySqlConnection, MySql.Data.MySqlClient.MySqlCommand﹥;  
  7. #endif 

这样在编译时指定条件编译符号 " MYSQL " 得到的就是MySql版本的代码,指定条件编译符号" MSSQLSERVER ",得到的就是 SQLServer 版本的代码。

C# 泛型操作数据库切换操作的总结:

(1)理论上来说,采用反射得到的解决方案更完美,不过那样工期会更长。

(2)数据库设计,偶采用的是免费软件 Toad Data Modeler 免费版,里面提供了数据库切换功能,切换过去,稍微改动改动。

(3)这次开发工具采用的全是开源软件或者免费软件,都是超级好用的东东,感觉开发速度并不比庞大的收费软件慢。用到的工具如下:

IDE:VS 2005 Express (C++版,C#版,Web开发版),.Net的aspnet命令行编译工具

版本管理:SVN,小乌龟SVN Client

Shell:Windows Power Shell(这玩意既然出来了,就要充分利用)

UML建模:StarUML(功能强大的开源UML,比偶以前用过的JUDE,ArgoUML强大很多,支持C#)

数据库建模:Toad Data Modeler 免费版

数据库管理工具:EMS SQL Manager 2005 lite for MySQL

C# 泛型操作数据库切换实践的基本内容就向你介绍到这里,希望对你了解和学习C# 泛型操作数据库切换实践有所帮助。

【编辑推荐】

  1. C# 泛型数组学习小结
  2. C# 泛型委托学习经验浅析
  3. 浅析运行库中的C# 泛型
  4. C# 泛型方法中反射常用方法浅析
  5. C# 泛型应用中属性浅析
责任编辑:仲衡 来源: 百度空间
相关推荐

2009-09-03 09:52:26

C# treeview

2011-07-01 13:42:24

QT 数据库

2009-09-15 09:50:07

Linq操作数据库

2020-11-16 08:56:02

Python

2011-07-05 10:27:06

MySQL数据库检索排序

2011-04-19 10:20:09

数据库

2023-12-27 13:44:00

数据库系统分布式

2023-04-27 09:36:43

2023-12-14 15:07:31

多线程数据库代码

2024-04-18 09:56:16

2009-07-07 09:24:37

LINQ检索

2021-07-28 14:40:57

鸿蒙HarmonyOS应用

2009-08-26 09:36:03

C#泛型

2009-08-04 14:52:33

Visual Web ASP.NET

2023-06-15 15:21:43

2016-05-11 10:09:49

数据层代码FastQuery

2009-08-17 17:42:57

C#数据库操作类

2009-09-02 17:38:16

C#泛型支持

2009-08-24 18:15:24

C# Dictiona

2009-08-24 15:12:13

C# 泛型接口
点赞
收藏

51CTO技术栈公众号