当前位置:编程学习 > C#/ASP.NET >>

关于net开发,适应多类数据库

假如一套系统,在ms sql平台下已经开发好了,用的是sqlhelper类,三层结构,
如果要换成mysql下面的,这里面所有的dao层都要重写,这样工作量很大,不一定很容易适应。

such as 

public bool AddArticle(Article article){
 SqlParameter[]param={
   //这里是一些存储过程的参数
 }
 return SqlHelper.ExecuteNonQuery(.....);
 执行
}

这样一个简单的dao用,要适应多个数据库,有没有比较好的方式呢,如access,mysql
现在要迁移到ms sql下面,需要改动的工作量大吗?还要注意些什么呢?
--------------------编程问答-------------------- 就是这样做的,一点都不麻烦,几分钟就搞定了。
sql语句基本是一样的,参数传递把“@”换成“?”,新建一个类库即可。
另外注意mysql5.0以上才支持存储过程,access不支持存储过程。有存储过程的地方自己看着办吧。

可用分等级:掌柜。下次带点分提问。 --------------------编程问答-------------------- 当然~不同的数据库要写不同的类库!再加上存储过程应该是很烦人...... --------------------编程问答-------------------- 呵,下次一定加分,
感觉这样改动起来,还是很麻烦的, --------------------编程问答-------------------- 使用抽象工厂模式,设计一个公用的数据库操作抽象类,只给方法不给实现,然后对其进行扩展,需要一种数据库写一个类,但是方法一样,这样保证你的逻辑层和表现层不需要改代码,只要新增数据访问层的操作类就可以了!扩展性良好,建议去看看抽象工厂设计思想的资料!一两句话说不清楚,本人也不提供任何源码,去google上搜下就很多! --------------------编程问答-------------------- 典型的抽象工厂模式,欠抽啊....呵呵 --------------------编程问答-------------------- LZ赶紧去研究下数据库接口工厂 --------------------编程问答-------------------- 我知道工厂模式,这样相当于多个dao重写,
呵,我的意思是能节省一些吗,最好是不需要改写代码,直接运用的那种。 --------------------编程问答--------------------
引用 7 楼 netwar 的回复:
我知道工厂模式,这样相当于多个dao重写, 
呵,我的意思是能节省一些吗,最好是不需要改写代码,直接运用的那种。

这已经是最节省的了,这其实是添加代码不是改写了,软件设计有个重要原则是什么?
"开闭原则":软件实体应对扩展开发,对修改关闭,这个原则是说在设计一个模块的时候,应对使这个模块可以在不被修改的前提下被扩展,换言之,应对可以不必修改源代码的情况下改变这个模块的行为.

每一次软件更新换代都要扩展一些代码,如果一点都不改,就能适应所有要求,你的软件难道是包罗万象的,那么你在第一次做的时候就要把所有的类库设计全了,把现有的数据库操作类都写进去,如oracle,mysql,sqlserver...其实这样做法还是一样啊,跟扩展有什么区别呢? --------------------编程问答-------------------- 噢。都这么厉害!
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,