Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > C#.NET > 采用C#泛型实现数据库之间的切换
【标  题】:采用C#泛型实现数据库之间的切换
【关键字】:C#
【来  源】:http://www.cnblogs.com/xiaotie/archive/2007/01/02/610121.html

采用C#泛型实现数据库之间的切换

Your Ad Here 采用C#泛型实现数据库之间的切换 - 兽族的荣耀 - 博客园

兽族的荣耀

这人世间怎么抵得上兽族的世界

博客园 首页 新随笔 联系 聚合 管理
  158 Posts :: 0 Stories :: 246 Comments :: 0 Trackbacks
    最近做的一个项目,我最开始选用的是 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

posted on 2007-01-02 18:03 xiaotie 阅读(297) 评论(4)  编辑 收藏 引用 网摘 所属分类: [语言]CLI(.NET)[ 藏 ]开源软件
闲话WPF之十八(WPF中的资源 [4] ):【上一篇】
web开发中的权限设计拙见一二(2) ----数据库设计:【下一篇】
【相关文章】
  • C#的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序
  • C# 从windows应用程序导出数据到excel
  • 在Visual Studio 2005的DataGridView控件中加入ComboBox下拉列表框的实现(C#)
  • C#学习:DataTable添加行
  • 扫雷(C#版)
  • C#学习:使用EventLog
  • C#学习:读取XML
  • C#启动屏保
  • 关于C#访问JAVA中的map类型的体会
  • 通过C#程序生成数据库的实体类,根据SqlServer存储过程生成数据操作类
  • 【随机文章】
  • 在Eclipse中使用JUnit4进行单元测试(中级篇)
  • symbian vc一些开发问题问答
  • ASP进阶之文章在线管理更新(13)
  • GUI of C++
  • 可以编程的FTP软件:FTP Control
  • Apache模块 mod_rewrite
  • Myeclipse 4.0.2 GA3.1下载地址
  • 6000/5000元装机方案
  • .Net-Com双向数据交换的实现(RecordSet与.Net DataSet的转化)
  • 北电网络为云南艺术学院部署全面的校园网解决方案
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.