sql语句差异问题?
我希望我的程序同时支持多种数据库,
但是不同的数据库sql语句是不一样的
我怎么实现?
问题点数:100、回复次数:13Top
1 楼steedhorse(晨星)回复于 2005-07-01 11:56:22 得分 10
尽量使用标准SQL语句。比如SQL 92标准。好一点的数据库系统都首先支持标准的,然后才是扩充的。Top
2 楼wjg001(中文昵称)回复于 2005-07-01 12:28:28 得分 0
是不是应该创建不同的类
然后根据配置文件用Factory创建相对数据库的类啊Top
3 楼nighthawk(我们孤单,我们并肩)回复于 2005-07-01 12:48:54 得分 10
请参考J2EE模式中的DAO模式
里面用到了抽象工厂来实现。Top
4 楼bobosji(波波司机)回复于 2005-07-01 13:15:34 得分 10
抽象多一层,把数据库的不同封装起来,或者选用成熟的ORM方案Top
5 楼cxydbydyq(紅衣主教)回复于 2005-07-01 13:24:40 得分 1
深奥!Top
6 楼rower203(华仔)回复于 2005-07-01 14:17:27 得分 10
这个我做过:
写个资源库,把数据库的差异封装在里面.
入口可以是数据库名,版本等.
对不同的数据库拿到不同的资源内容.
使用时用它"过滤"一下就可以了.
包括:DB2, SQLServer, Informix, MySQL, Sybase, Oracel, ODBC DS, HSQL etc.
及不同版本,不同Driver Version的差异。Top
7 楼winterroot(sdg)回复于 2005-07-01 14:40:10 得分 10
用hibernateTop
8 楼iihero(iihero)回复于 2005-07-01 16:40:37 得分 10
to rower203:
很多差异只能制取接口来实现了。
碰到复杂的SQL语句,最好是单独实现(从效率上来讲)
有一种比较理想化的方法,做一个SQL解析,让用户完全采用标准SQL,然后做一个SQL到各数据库的映射。Top
9 楼wjg001(中文昵称)回复于 2005-07-01 17:37:36 得分 0
to rower203:
资源库指什么,是配置文件吗
如果sql语句要动态生成呢?
如根据提交的数据,生成更新语句Top
10 楼dongdong715(美女追我八条街(抵制日货))回复于 2005-07-02 16:36:40 得分 10
资源类,就是一个类啊,,用数据库名,版本号作为某些方法的参数定位是哪个数据库。Top
11 楼yeshucheng(叶澍成★七哥)回复于 2005-07-02 21:38:19 得分 10
其实你再怎么写都是相对的,这种数据库的跨越本身 就是个问题Top
12 楼xmadan(厦门★阿丹)回复于 2005-07-02 23:39:34 得分 10
当然是用Hibernate罗(HQL或者还有另一种.叫C*****----忘了)~~~~轻松解决~~~~等分,HOHOTop
13 楼yangbc(土豆块)回复于 2005-07-04 05:57:46 得分 9
可以把重点放在数据库端,对每种数据库使用存储过程,应用程序只调用过程Top




