文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发C/C++采用C#泛型实现数据库之间的切换
精品推荐
特别推荐
·C语言编程易犯毛病集合
·C语言编程常见问题解答(目录)
·C#程序开发中的常用函数汇总
·C/C++笔试、面试题目大汇总
·Beej的网络socket编程指南
·socket编程原理
·C语言的常用库函数使用方法分析及用途
·在C语言中如何处理时间和日期
·C++设计模式之Singleton
·VC++动态链接库编程之MFC扩展 DLL
·TCP/IP网络重复型服务器通信软件的设计
·DirectX游戏开发入门
·经典与现代的结合:在MFC中集成RAD .NET框架
·Windows API-GDI入门基础知识详解(2)
·Visual C++ 入门精解
·C#基础概念二十五问
·用C#实现pdf文件的完整性验证
·成为嵌入式程序员应知道的0x10个问题
·TCP/IP编程实现远程文件传输
·几个C#编程的小技巧
热点TOP10
·socket编程原理
·C#程序开发中的常用函数汇总
·C#基础概念二十五问
·Visual C++ 入门精解
·asp.net中调用javascript函数实现多功能日期控件示例
·《C语言程序设计》教学的几点体会
·简易的四则运算
·学生成绩管理系统实习
·C# GridView 排序及分页
·C#中ArrayList.CopyTo()运行错误的解决方法
·C++ builder 的文件读写操作总结
·C#源码读取excel数据到程序中-SQL SERVER-到dataset中
·TCP/IP编程实现远程文件传输
·C++设计模式之Singleton
·C宏--智者的利刃,愚者的恶梦
·实现真正意义上的二维动态数组模板
·Delphi中用FastReport制作报表
·VC++下用MSComm控件实现串口通讯
·Beej的网络socket编程指南
·C宏——智者的利刃,愚者的恶梦!

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

日期:2007年1月8日 作者: 查看:[大字体 中字体 小字体]


最近做的一个项目,我最开始选用的是 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


[1] [2] 下一页 




上一篇:C#连接mysql

下一篇:C#编写发送电子邮件

采用C#泛型实现数据库之间的切换 相关文章:
·在PB中如何实现数据模糊查询
·菜鸟学电脑:CTRL+SHIFT不能切换输入法故障解决
·新收集200多种美化QQ空间的透明Flash
·Ajax实现分页查询
·PB动态报表格式自由定义的实现
·PB程序中在普通激光打印机上实现条码打印
·Java语言实现支持视频点播的WEB服务器
·Delphi中利用钩子实现QQ聊天窗口的修改
·用PM实现无损调整磁盘分区
·关闭或者删除腾讯QQ空间的办法
采用C#泛型实现数据库之间的切换 相关软件:
·TCP-IP详解卷2:实现
·逐步精通数据库 sql server 视频教程
·SQL/MYSQL/数据库教程专栏
·电子商务互联网数据库试卷
·06年9月等级考试三级数据库技术试题
·CASP.NET以及数据库的一些电子书,初次做种
·东南大学SQL数据库基础视频教学全42讲 CSF 详见查看
·ACCESS数据库教程 北京大学的ACCESS教程
·ACCESS数据库密码破解专家 V2.0
·Aerial Antics(实现你的飞翔梦) V1.0

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot