采用c#泛型实现数据库之间的转换_c#应用
2008-02-23 05:42:23来源:互联网 阅读 ()
最近做的一个项目,我最开始选用的是 MySql 5.0 数据库,项目提交之后,对方需要换成 MS SQLServer 2000,还好数据层操作基本采用的是标准的SQL语句,也未使用存储过程,于是将原有的数据接入层代码改写成泛型类,只改了不到一百行代码,具体的SQL操作语句一句未动,便实现了数据库之间的转换。下面简述:
数据库不是很复杂,因此我采用了两个类:
(1) DataProvider 泛型类
public class DataProvider<ConnType, CmdType>
where ConnType : IDbConnection, new()
where CmdType : IDbCommand,new ()
{
}
提供数据库表的Insert,Update,Select,Delete操作。
因为 IDbCommand能够由 IDbConnection 获取,其实只需要有一个泛型参数ConnType 的,但是这样以来,具体的代码改变比较大,偶就采用了两个泛型参数。
(2)ConnectionPool 泛型类
public class ConnectionPool<T>
where T : IDbConnection,new ()
{
}
最开始没在MySql 5.0 中找到对数据库连接池的支持,于是自己写了一个简单的数据库连接池。
下面,就是采用 C# 的NB语法――using:
(1)假如使用 MySql 数据库:
using DataProvider = DataProvider<MySql.Data.MySqlClient.MySqlConnection, MySql.Data.MySqlClient.MySqlCommand>;
(2)假如使用 SQLServer 数据库:
using DataProvider = DataProvider<System.Data.SqlClient.SqlConnection, System.Data.SqlClient.SqlCommand>;
这样一来,其他地方的代码一句都不用动了。
懒惰是程式员的美德。我的一台电脑上装的是 SQLServer 2000数据库,一台电脑上装的是 MySql数据库,我经常一会在这台电脑上干活,一会在另外一台电脑上干活,两个电脑上的代码应该一致啊。因此,采用预编译指令:
#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 版本的代码。
其他:
(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
http://www.cnblogs.com/xiaotie/archive/2007/01/02/610121.html
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: c#编写发送电子邮件_c#应用
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash