采用C#泛型实现数据库之间的切换
数据库不是很复杂,因此我采用了两个类:
(1) DataProvider 泛型类
where ConnType : IDbConnection, new()
where CmdType : IDbCommand,new ()
{
}
提供数据库表的Insert,Update,Select,Delete操作。
因为 IDbCommand能够由 IDbConnection 获取,其实只需要有一个泛型参数ConnType 的,不过这样以来,具体的代码改动比较大,偶就采用了两个泛型参数。
(2)ConnectionPool 泛型类
where T : IDbConnection,new ()
{
}
最开始没在MySql 5.0 中找到对数据库连接池的支持,于是自己写了一个简单的数据库连接池。
下面,就是采用 C# 的NB语法――using:
(1)如果使用 MySql 数据库:
(2)如果使用 SQLServer 数据库:
这样一来,其它地方的代码一句都不用动了。
懒惰是程序员的美德。我的一台电脑上装的是 SQLServer 2000数据库,一台电脑上装的是 MySql数据库,我经常一会在这台电脑上干活,一会在另外一台电脑上干活,两个电脑上的代码应该一致啊。因此,采用预编译指令:
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
本文转自xiaotie博客园博客,原文链接http://www.cnblogs.com/xiaotie/archive/2007/01/02/610121.html如需转载请自行联系原作者
xiaotie 集异璧实验室(GEBLAB)
采用C#泛型实现数据库之间的切换相关推荐
- 如何做到在虚拟数据库和真实数据库之间自由切换?【低调赠送:QQ高仿版GG 4.4 最新源码】...
记得以前在公司上班时,有时候白天的活没干完,我就会把工作带回家晚上加班继续做.但是,我们开发用的数据库是部署在公司局网内部的一台服务器上的,在家里是肯定连不上这台机器的.在家里没有数据库,服务端就跑不 ...
- 使用多态来实现数据库之间的切换
1.一般数据库之间的转换时这样实现的 static void Main(string[] args){//必须引入System.Data程序集string connectionString = Con ...
- mysql 迭代更新_MySQL、MongoDB、Redis 数据库之间的区别与使用(本章迭代更新)
MySQL.MongoDB.Redis 数据库之间的区别与使用 MySQL.MongoDB.Redis 数据库之间的区别与使用(本章迭代更新) update:2019年2月20日 15:21:19(本 ...
- 如何实现Oracle数据库之间的数据同步?
我们都知道,在Oracle数据库的管理与开发工作中,总会存在着一些表数据和基础资料数据,这时需要有效的将这些数据库进行同步合并,有没有什么简单的方法可以实现Oracle数据库之间的数据同步呢?在此诚恺 ...
- 如何实现两个数据库之间的同步
两台服务器分别架在两个不同的机房,要实现所有表中数据的同步,延时一两分钟没关系,数据库数据量很大,表大概有不到一百个吧,怎么实现同步?不同服务器数据库之间的数据操作--创建链接服务器 execsp_a ...
- oracle两个数据库之间,如何实现oracle两个数据库之间的同步
如何实现oracle两个数据库之间的同步 关注:166 答案:2 手机版 解决时间 2021-01-23 22:02 提问者美人如画皮 2021-01-23 13:26 如何实现oracle两个数 ...
- 比较和同步两个SQL Server数据库之间的图像
介绍 (Introduction) Sometimes we lose data by mistake and we want to compare the data with older backu ...
- oracle数据库集群采用的是形式,铁道部采用Oracle集群数据库进行TMIS系统“三级建库”...
综述 铁道部利用Oracle9i集群数据库系统(Oracle9i RAC),顺利开展铁道部运输管理信息系统(TMIS)的"三级建库"工程--在各铁路局和铁路分局利用Oracle9i ...
- php 集成 spss,〖SPSS Modeler〗 IBM SPSS Modeler 整合不同数据库之间的数据
来自IBM DEVELOPERWORKS 简介 由于目前企业客户的业务量和数据量都在不断的提高,随着企业的发展,很多企业的数据存储都不局限于同一个数据库上,如果要对这些存储在不同数据库上的数据进行处理 ...
- 业务逻辑与数据库之间缓存层
业务逻辑直接与数据库进行交互,这样将会严重影响系统的整体性能,因此在业务逻辑与数据库之间引入一层缓存层,当需要向数据库中添加数据实体时,先将数据实体对象放入到缓存,并将实体对象放入到队列中,以进行持久 ...
最新文章
- R语言与数据分析(9)R与Excel
- 【c语言】蓝桥杯算法提高 三角形面积
- pdo mysql防注入_Php中用PDO查询Mysql来避免SQL注入风险的方法
- 托管数据中心之间的PUE比较(下)
- c#入门经典笔记第十章
- 函数的参数-列表使用+=本质上是调用extend方法
- boost::scoped_ptr与std::unique_ptr
- C++ I/O流 格式控制(下)
- 如何成为一位黑客 ( How To Become A Hacker )
- ktv服务器操作系统,开源ktv客户端服务器系统
- java中常用的数据结构_Java中常用的数据结构类
- Git-第N篇碰见的一些问题
- 安卓 电话黑名单拦截
- 多线程练习题(双色球)
- 2022 年 React Native 的全新架构更新
- 企业微信应用消息html标签,消息类型及数据格式
- Python矩阵计算-Numpy
- 喜马拉雅自研网关架构演进过程
- 你听过哪些与房东有关的悲催的故事?
- 苹果11是高通基带吗_iPhone11信号成最大问题,不支持5G还是英特尔基带,令人失望...
热门文章
- 矩阵论作业4,5,6讲
- 【POJ 2104】【主席树模板题】K-th Number
- 【POJ 3279】【开关问题】Fliptile【暑期 No.5】
- 什么是OM3、OM4光纤跳线?
- Raki的读paper小记:SimCSE: Simple Contrastive Learning of Sentence Embeddings
- effective java 枚举_Effective.Java第34-44条(枚举)
- iic标准c语言,I2C总线之(三)---以C语言理解IIC
- android画板笔锋实现
- Linux驱动之异步OR同步,阻塞OR非阻塞概念介绍
- Apache VirtualHost的配置