最近做的一个项目,我最开始选用的是 MySql 5.0 数据库,项目提交之后,对方要求换成 MS SQLServer 2000,还好数据层操作基本采用的是标准的SQL语句,也未使用存储过程,于是将原有的数据接入层代码改写成泛型类,只改了不到一百行代码,具体的SQL操作语句一句未动,便实现了数据库之间的切换。下面简述:
数据库不是很复杂,因此我采用了两个类:
(1) DataProvider 泛型类
public class DataProvider<ConnType, CmdType> where ConnType : IDbConnection, new() where CmdType : IDbCommand,new () {
#if MSSQLSERVER using System.Data.SqlClient; using DataProvider = DataProvider<System.Data.SqlClient.SqlConnection, System.Data.SqlClient.SqlCommand>; #elif MYSQL using MySql.Data; using DataProvider = DataProvider<MySql.Data.MySqlClient.MySqlConnection, MySql.Data.MySqlClient.MySqlCommand>; #endif 这样在编译时指定条件编译符号 " MYSQL " 得到的就是MySql版本的代码,指定条件编译符号" MSSQLSERVER ",得到的就是 SQLServer 版本的代码。
(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