日期:2014-05-17  浏览次数:20365 次

请教大神!如何使程序支持多种数据库?!
工程实践“加密数据检索”中,需要数据库支持数据查询,鄙人负责支持多种数据库功能,

可是鄙人对这一功能的实现 不知如何下手,请大家指点一二,不胜感激!!
数据库 支持多种数据库

------解决方案--------------------
引用:
引用:比如说 你们公司的两家客户 一家要用oracle 一家要用sql
你肯定是知道那家用的sql,哪家用的oracle
那么你就可以定义一个 固定的变量 SQLTYPE
当 SQLTYPE = ORACLE 的时候
你就写oracle 的语句
反之 则是sql语句

该用什么函数 检测对方用的是 sql 还是 ……

这个应该是你们这边定的,而不是检索
即使能检索出来,也没什么用,假如 客户公司用的是你们的sql数据库,但是这个客户 还用别的数据库
软件 是oracle的 你咋检索?
是你们定死的,
客户用的时候,让他们选数据库。
------解决方案--------------------
引用,不然帖子太多刷的太快的时候就很难找到你的贴了。我个人的理解是,不是每个dbms都是完全支持标准sql的,所以对于一些标准sql支持的,你只需要写一个就可以了,但是有些只能用对应的sql语言,如t-sql或者plsql,那就要进行判断,因为你不可能在SQLServer里面有Oracle的库,或者Oracle中有SQLServer的库,所以必须要连到不同的dbms(数据库管理系统,也就是常说的SQLServer、DB2、Oracle、mysql等)的连接字符串,额外写一些sql
------解决方案--------------------
我们以前是同时支持oralce和sql server,
数据库这边几乎就是写了两套脚本,因为业务里面的逻辑很多封装在存储过程里,脚本必须得重写;
前台程序的话,根据配置文件加载不同驱动,借口的调用里可能也要写2套,不同数据库不同的调用。


------解决方案--------------------
我建议你使用ORM工具,一般来说它们的DDL层是屏蔽具体的数据库的。另外微软的企业库中的数据访问层也是屏蔽数据库的。
------解决方案--------------------
我之前的想法:
用INI文件来保存使用的是什么数据库。在代码中判断,如果是SQL Server,则执行SQL Server相关的语句;如果是Oracle,则执行Oracle的语句……

之前的另一个想法,但被人否定的:
1、查询尽量用视图,这样,不同的数据库,也可以用视图来代码中统一。
2、数据操作尽量用存储过程,这样,不同的数据库,也可以在代码中方便统一调用。