C#学习- 通过基于接口的编程来实现数据库的切换

  昨晚有去想一下,实现数据库切换的其他方法。这个方法不是我想到,以前看过别人这么做过。然后回忆回忆着就写出来了。

  好了,说一下他实现的方法。当然他有一个比较大的缺点在后面说一下。在ADO.NET里有很多操作数据库的类。

  1、例如以MSSQLSERVER来讲就有SqlConnection、SqlDataReader、SqlCommand等操作数据库相关的类,只要你VS里面右键这些类名选转到定义,不停转到定义后会发现,SqlConnection实现的是IDbConnection接口,SqlDataReader实现IDataReader接口,SqlCommand实现的是IDbCommand接口。

  2、例如以Access来讲就有 OleDbConnection、OleDbDataReader、OleDbCommand等操作数据库相关的类,同样的转到定义后你也会发现OleDbConnection实现的是IDbConnection接口,OleDbDataReader实现IDataReader接口,OleDbCommand实现的是IDbCommand接口。

  3、如何你去看一下Oracle或再去下载一个MySQL数据库关于连接ADO.NET的DLL添加引用到你的项目,你也会发现他们都实现了相同的相应的接口。

  4、竟然他们实现了相同的相应的接口,那么我们就可以通过基于接口的编程来实现数据库的切换

  

  可是真的实现了后,发现一点问题也有没有么?其实不是的,各个数据库间的SQL语句是有些不相同,当然增删改查SQL语句是相同的,可是你要用SQL语句做一个分页,在MSSSQLSERVER里有他的实现方法,在MYSQL里又有他的实现方法,可能(我还没有接触过ORACLE)在ORACLE又有他的实现方法。例如在传参的时候MSSQLSERVER使用@参数名,但是ACCESS使用的是?号,再例如MSSQLSERVER里有SUBSTRING,当是ACCESS里没有,但能用ACCESS能用MID截字符串。所以各个数据库间SQL语句没有完全真正的统一,那么就没有办法做到数据库完美的切换。这是我自己的一点看法。一万个人心中有一万个哈姆雷特,你可能有你的看法。

  

  废话了这么多,可以贴一下代码了。。。因为代码量不多,没做什么解释,我想聪明的你,多看看就看懂了吧。

  

实现过程

  做为例子,一切简单化,建一个WEB应用项目,取名为切换数据库DEMO。和两个类库,一个MODEL类库,一个DAL类库,这回用到了WEB.CONFIG的配置文件。如图所示:

  DAL的代码:

using System.Data; 
using System.Data.SqlClient; 
using System.Data.OleDb; 
using Model; 
namespace DAL 
{ 
    public class CustomerDAL 
    { 
        s
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值