大概是这样的:
    一个数据库管理系统,运行时可能接收到一些数据库连接信息,包括IP,端口,库名,用户名和密码。这时候程序需要连接到这个数据库上查询一些东西。主要的一点是,收到的这些数据库类型是不一样的,可能有oracle,db2, informix, Sybase,MySql,MS SQL Server。现在就有一个问题,我需要一个统一的数据库访问接口, 开始考虑用ODBC来做,但是有几点不明白,请高手解答1.如果用odbc来做,在我的平台上,是不是需要安装这些数据库的客户端。请说明哪些要,哪些不要。2.ODBC对数据库的配置,到写在配置文件里,因为我的数据库信息是程序中动态获得的,ODBC能不能抛开odbc.ini和odbcinst.ini这两个配置文件3.有没有比ODBC更好,更简单的实现方法,比如不用安装客户端,又能统一访问各种数据库。4.如果我什么都不用,为每种数据库单独封一套访问接口出来,这样用不用安装数据库的客户端。真的希望哪位数据库方面的专家帮忙解答这些问题,如果方便的话加我QQ好方便向你讨教。65515000

解决方案 »

  1.   

    补充一点,开发平台linux debian发行版本
      

  2.   

    没有接触过太多数据库,说说我的了解,仅供参考:
    1,对于ODBC连接方式,需要有相应数据库的驱动,应该都可以在网上下载,如果机器上装有客户端则会自动有相应的驱动,至于哪些需要我知道oracle需要,sql server 肯定是不需要了,其它数据库不太了解。
    2,google 动态配置ODBC
    3,按照楼主的思路就需要找第三方插件了,但兼容这么多数据库的好像不是太多,我用过OTL(C++),它连接Oracle是通过Oracle通过的oci相连接,但对MS之类的数据好像也是通过ODBC相连
    4,我了解的数据库客户端都不是必须的,只需要有驱动就可以了,用工厂模式也挺好
      

  3.   

    几年以前,我倒是做过类似的东东。不过,说实话,实用性不强。ODBC封装起来,还是蛮简单的。就看你是做一个统一接口,还是基于统一接口做一个server,屏蔽数据库之间的差异,提供统一服务?如果是统一接口,基本上把ODBC接口稍加wrap就可以了。如果是做一个监听的server (proxy),那所要做的工作就多了。1. oracle是需要装客户端, sybase需要装驱动, sqlserver需要装驱动
    2. 据我所知,odbc.ini和odbcinst.ini大多情况是要使用的,这跟具体的odbc实现是否支持SQLDriverconnect函数有关。如果完全支持,则不用。但是你不能保证所有的DBMS都支持。
    3. JDBC? 
    4. 你自行封装,更需要对应数据库的客户端了。
      

  4.   

    呵呵,不太现实的东西,如果可以的话,早就有产品了为什么不行呢,
    1:驱动,性能
    2:每种语言都有自己扩充的东西,ORACLE有PL/SQL,SQL SERVER有T-SQL ,如此强大的扩充不可能大家都不用而去用标准SQL,
    3:数据类型,
    4:其它的就不说了,什么索引啊。数据库大了,索引对于性能的优化是不言而喻的。。