Chinaunix

标题: 如何在UNIX下实现跨数据库操作? [打印本页]

作者: bovy    时间: 2003-07-08 14:56
标题: 如何在UNIX下实现跨数据库操作?
现在我们准备在unix/c++ 下开发一个企业级应用程序,需要访问数据库,由于我们的客户很多,
并且以前他们已经实现了不同程度的信息化,也就是说,他们有的使用的数据库是不同的(如Oracle,Informix
SQL Server等等),如何写一个类封装访问数据库的操作,通过配置文件记录用户的数据库类型,如何实现,用户使用不同
使用不同的数据库的时候,只需要修改配置文件中的的配置信息,而不修改程序呢?
作者: mushuang    时间: 2003-07-08 15:08
标题: 如何在UNIX下实现跨数据库操作?
1 使用ODBC
这是最简单也是效率低的办法

2  自己写数据库连接库 就是像中间件那样
论坛FTP提供都mengwg 兄自己做过一个
你可以到它论坛上问问
作者: snowpy    时间: 2003-07-08 16:21
标题: 如何在UNIX下实现跨数据库操作?
给你一个小小的提示,上层封装一个统一接口,底层自己用各种数据库的最底层的API来实现
我自己写了一个跨Win32/Linux/Solaris的DBAPI
(cross platform and cross database API)
提供Oracle/MySQL/Sybase/MSSQL四种数据库的高性能纯C API统一接口(类似ODBC)
+异种数据库的多重连接池+自动复制....

原帖由 "bovy" 发表:
现在我们准备在unix/c++ 下开发一个企业级应用程序,需要访问数据库,由于我们的客户很多,
并且以前他们已经实现了不同程度的信息化,也就是说,他们有的使用的数据库是不同的(如Oracle,Informix
SQL Server等等..........

作者: 大菠萝    时间: 2003-07-08 16:38
标题: 如何在UNIX下实现跨数据库操作?
给你一个小小的提示,上层封装一个统一接口,底层自己用各种数据库的最底层的API来实现
我自己写了一个跨Win32/Linux/Solaris的DBAPI
(cross platform and cross database API)
提供Oracle/MySQL/Sybase/MSSQL四种数据库的高性能纯C API统一接口(类似ODBC)
+异种数据库的多重连接池+自动复制....


作者: bovy    时间: 2003-07-09 19:52
标题: 如何在UNIX下实现跨数据库操作?
[quote]原帖由 "snowpy"][/quote 发表:
     哦,
你使用的是那种与语言呢?能所得具体一点么
?

我的EMAIL:LEEMINGJUN@MSN.COM
作者: 无双    时间: 2003-07-09 21:26
标题: 如何在UNIX下实现跨数据库操作?
另外是运行时指定还是编译时指定呢

如果编译时指定的话

只要为每种数据库写一个操作接口

连接时指定连接的库就可以了

如果是运行时指定可能比较难
因为数据库的接口会有重复的时候

当然如果使用c++的话可以使用名字空间或类的方法限制
作者: 蓝色键盘    时间: 2003-07-10 13:06
标题: 如何在UNIX下实现跨数据库操作?
偶,一般用c来写,接口可以统一,只是在不同的数据库系统中连接不同的数据库库文件就可以了。

如果接口不同一,也没关系,和统一一样。只是连接的库不同而已。

接口的统一与否,带来的好处是程序的维护、更新方便,这个于数据库系统没什么关系。
作者: snowpy    时间: 2003-07-10 13:32
标题: 如何在UNIX下实现跨数据库操作?
上层接口用C++,底层实现用C
你可以使用各种数据库的纯C接口
原帖由 "bovy" 发表:
    哦,
你使用的是那种与语言呢?能所得具体一点么
?

我的EMAIL:LEEMINGJUN@MSN.COM

作者: snowpy    时间: 2003-07-10 13:36
标题: 如何在UNIX下实现跨数据库操作?
各种数据库的底层接口并没有重复的函数名字
我觉得用NAMESPACE挺混乱的
把支持的.A,.SO LINK进去就行了,最多是主程序大一点而已

原帖由 "无双" 发表:
另外是运行时指定还是编译时指定呢

如果编译时指定的话

只要为每种数据库写一个操作接口

连接时指定连接的库就可以了

如果是运行时指定可能比较难
因为数据库的接口会有重复的时候

当然如果使用c++?.........





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2