高手请进!如何在数据访问层中实现SQLSERVER连接ACCESS连接的简单切换?
如何在数据访问层中实现SQLSERVER连接ACCESS连接的简单切换?
高手请进!
------解决方案--------------------我不知道你要这样切换来做什么
你可以把访问SQL SERVER和ACCESS都写成一个类,然后用到哪个的时候就调用哪个
但一旦你的类生成了你就不能再更改了
比喻
SqlConnection conn;
OdlebConnection conn;
两个只能定义一个,不能用了SQL的CONN来访问ACCESS
------解决方案--------------------写成两个类吧,一个SqlDataAccess类,一个OledbDataAccess类,访问数据库的时候,访问哪个类,就调用哪个类.
------解决方案--------------------能常这种需求可以用简单工厂模式来实现...
主要包含:
一个数据库枚举
一个数据库基类
两个数据库子类
一个工厂类
LZ看看相关的内容,自己写起来还是比较简单的
------解决方案--------------------呵呵,简单点,两个类就够了
直接生成DLL文件,随时调用
------解决方案--------------------IDbConnection conn=new SqlConnection(SqlConfig);或者new OleDbConnection(OleDbConfig);
http://community.csdn.net/Expert/topic/5169/5169703.xml?temp=.9818689
什么时候用ORM和不用ORM已经说的很清楚了。
------解决方案--------------------恩,出来混的要讲点道义啊。我也说两句
建个数据库连接工厂就够了,可以生成一个dll文件,或者直接把这个工厂类到处复制也行。只是用dll的时候注意引入命名空间就行了。
------解决方案--------------------就是新建一个枚举 表示sqlserver 或access的。然后写一个类。按照枚举来分别是sqlserver还是access的,方法都写一样的(if(sqlserver){...}else{...})。以后不管用sqlserver 还是acess 传给构造函数一个参数就行了,然后调用其方法就行了。
------解决方案--------------------认真看看设计模式中(Factory)工厂模式和(Strategy)策略模式。你提的问题大多数开发人员都碰到过,设计模式前人总结出来的解决方案和方法,我不赞成你用if..else来解决这样的问题
我们来假设一下你用了if..else来解决
1.当需求发生变化,假设需要支持mysql,Oracle?
2.程序已经发布了,当有客户需要二次开发来完成客户自己的数据库你是否要更改程序?
如何消除if..else在设计模式中你可以找到答案。
面向对象的编程要尽量考虑到重用性、灵活性和扩展性。
------解决方案--------------------简单的有人已经给出答案了
就使用工厂模式
你需要什么告诉它就行了,它会帮你完成
------解决方案--------------------一般的设计模式书上讲工厂模式时,都会拿这个来作为例子....