首页 新闻 会员 周边 捐助

动网如何多数据库支持

0
悬赏园豆:10 [已解决问题] 解决于 2008-06-01 09:21
<P>最近下了一个动网asp论坛源码,想看看它是如何做到兼容access和sqlserver,并随时切换.<BR>可是里面的代码实在糟糕,很乱,看不出来,还看了很多删除更新操作都不用使用Parameter对象的,晕菜,只是用函数过滤一下危险符号而已,要知到adoyes有Parameter啊,动网到底在搞什么,难怪号称"洞网"<BR>有研究过"洞网"的朋友请赐教一下asp要如何做到多数据库切换,嘿嘿</P>
玛瑙王国--这里的玛瑙会说话的主页 玛瑙王国--这里的玛瑙会说话 | 菜鸟二级 | 园豆:258
提问于:2008-05-31 13:39
< >
分享
最佳答案
0
支持多数据库是一种困难的事情。支持多数库有两种两种方式。 第一种方式,编写一个数据库抽象层,针对不同的数据库作不同的实现。 第二种方式,使用一种Common SQL,通过一个翻译引擎,将Common SQL翻译为Dialect SQL。 目前很多开放源代码项目,都支持多数据库,通常是使用第一种方式。第一种方式,有一个问题,就是要求程序员对不同数据库都熟悉,这个要对,对大多数程序员而言,太高了。包括著名开源项目的Hibernate,也只是利用到数据库的相当少的一部分功能,没有针对不同数据库的优化选项。不同数据库对 Query Hints和Locking Hints的支持都不相同,而Hints又是数据库访问优化的重要办法。这种方式在实现的过程中,会占用相当大一部分的开放实现,而且对程序的可维护性造成影响。 第二种方式,需要定义一套Common SQL,接近SQL-92标准,跟某一种Dialect SQL相似,例如可以跟MS SQL Server的Transact SQL相似。还需要一个翻译引擎,把Common SQL翻译到不同的Dialect SQL,例如DB2的SQL、Oracle的P/L SQL,Microsoft的Transact SQL。这样,大多数程序员只需要了解一种Dialect SQL,如果以Microsoft的Transact SQL为基准定义Common SQL,大多数的程序员都了解SQL Server的Transact SQL,几乎不需要或者只需要很低培训成本,就可以支持多数据库了。 还可以运用反射技术!!
伽马科技.攻城师 | 小虾三级 |园豆:1303 | 2008-06-01 01:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册