C++跨平台数据库连接库

剑神 发布于 2014/01/05 19:09
阅读 3K+
收藏 6

差不多三四天之前,我做了一点关于C++数据库连接库的资料查阅,虽说是被一坑再坑,但是总体来说还是有所收获的。因为要求是我所使用的C++库需要能够运行于Windows和Linux上,而且能够支持不同的数据库,所以这个还是不太好找的。

首先第一个找到的是libzdb,可惜的是这玩意儿不在Windows上用,所以没有办法,直接舍弃了。

再第二个,就是ODBC,这个玩意儿我之前在Windows上用过,确实很方便,于是我尝试在我的Ubuntu12.04上进行测试,结果却让人大失所望,当时我所使用的测试数据库是MySQL,我各方查找资料,查到了iODBC,查到了unixODBC,查到了libmyobdc,经过几天的折腾,基本上除了各种失败还是失败,网上的各路中英文教程我仔仔细细阅读了连续好几天,最后结果是:伤!因为基本上那些教程都已经过时了,很多iODBC依赖库以及其依赖库的依赖库,基本上都已经变了,自由一个就是iODBC的界面那些参数的设置完全不知道是干什么用的,也没用相应的文档可以查看,至于网上各路的什么iODBC安装使用帖子,也完全都过时了,因为Ubuntu从他们所使用的8.xx已经升级到了13.xx;尤其让人蛋疼的是那个MySQL自己官网上的英文文档,感觉完全就是个“坑”,花了很大的精力去阅读并按照它所谓官方Documents去做的时候,我恨不得直接把自己电脑砸了,甚至我要是有本事黑进MySQL官网的服务器,我会直接把他那些狗屁文档全部删个精光,且不说你对那些阅读者有没有帮助吧,起码不应该用那些过时的东西来误导人啊,标上一个时间戳给人提个醒也不为过吧?彻底就是不负责任,甚至是随意践踏读者对他们的信任。

第三个就是OTL(Oracle Template Library):

2).关于OTL的介绍网上有,在OSChina上也有: http://www.oschina.net/p/otl
感觉好像很厉害的样子,甚至也有人对其大加赞赏和崇拜,因为一个头文件就能连接起那么多的数据库,还是跨平台的,真是太了不起太厉害了。初看时好像还真是那么回事,刚开始的时候我也被咪得喜滋滋的,这玩意儿这么神奇这么厉害,那该是好东西啊。于是呢,我就去官网下载了所需要的头文件以及部分的示例代码,还有就是阅读那个网站上的相关英文文档,并开始自己尝试进行测试使用,结果却让人大失所望:其实他这个就只是一层封装而已,针对不同的平台和数据库,都需要我们进行其他的配置以及安装相应的数据库驱动和桥来连接,这个OTL也只是一个被人写好的接口而已。拿我所测试使用的MySQL来说吧,我需要做上面已介绍过的“第二个”ODBC的一模一样的全部安装和配置之外,我还要按照他给我定好的规矩并学习他的那套接口;其他的数据库如Oracle和My SQL Server或者DB2基本是一样的情况,所以这个玩意儿有用吗?要说有没有用,那确实还是有一定的学习用途,我个人觉得某些发帖的人甚至都没有自己试过,就在那儿瞎吹这东西多神奇多厉害,完全就是不负责任,不过话又说回来,人家也没有必要负责任,有些人就爱吹就爱胡说八道,你要信那你就自己负责。


还有一个就是DTL(Database template Library):

1).地址:http://dtemplatelib.sourceforge.net/                                                                        2).关于DTL的中文介绍其实就是从英文的说明文档翻译过来的,其他比较具体使用的我也没有找到 .                 

使用例子上面的链接里面可以找到相关的链接。不过我确实是看不太懂他的那个到底是意思,所以我也没用做对应的测试,因为他的文档已经很清楚,这就是ODBC的封装。

最后一个,ODB(C++):

2).上面给出的地址是他的官网,可以从那儿下载到源代码和阅读到非常详细的说明以及使用实例。

对于这个,我个人感觉还是比较好用的,因为这个库他自己提供所有的驱动下载和接口,我们只需下载对应的驱动并按照安装文档的说明进行安装使用就可以了,虽然是全英文的,但是也还好;不过其中有部分是不太可靠的,比如说我所使用的MySQL,需要下载MySQL的开发库,在Ubuntu下需要安装libmysql++dev以及mysql server。

差不多就这些了。以上所有言论均属个人见解,如有指教,不论好坏,都谢谢列位路过的看官!

加载中
0
newzai
newzai

大哥,知道ODB使用的是什么封装吗?对不同的平台都是使用各自提供的API,ODB对 Mysql是使用mysql的 C API,对sqlite 是使用sqlite的C API,使用了mysql 的CAPI,能不下载mysql的开发库吗?难道你想让ODB使用统一的SQL 92语言去执行所有操作吗?这个不太可能吧。。

ODB是我见过,使用过的,最好的C++数据库接口了。我的很多项目目前基本上都使用ODB,从1.4版本开始,到2.x等版本,看着ODB一步一步的完善起来。。当然ODB现在还不支持DB2等一些流行的数据库。。

0
宏哥
宏哥

C++就够坑了

加上跨平台

还有更坑的么

0
剑神
剑神

引用来自“newzai”的答案

大哥,知道ODB使用的是什么封装吗?对不同的平台都是使用各自提供的API,ODB对 Mysql是使用mysql的 C API,对sqlite 是使用sqlite的C API,使用了mysql 的CAPI,能不下载mysql的开发库吗?难道你想让ODB使用统一的SQL 92语言去执行所有操作吗?这个不太可能吧。。

ODB是我见过,使用过的,最好的C++数据库接口了。我的很多项目目前基本上都使用ODB,从1.4版本开始,到2.x等版本,看着ODB一步一步的完善起来。。当然ODB现在还不支持DB2等一些流行的数据库。。

我并没有说ODB不好,甚至综合前面列举的那几个,ODB相比其他几个而言应该是最好的,只是我并没有说出来而已。
0
smarthand
smarthand
正好在搞这方面的东西,你的文章对我有启发。
返回顶部
顶部