cppodbc--c++的odbc封装类

近日闲暇时研究了一下linux下的开源项目unixodbc,使用起来很是方便。现在总结一下,以飨读者。

    关于ODBC的介绍,在网上找了一段比较经典的解释:ODBC Open Database Connect 即开放数据库互连的简称,它是由Microsoft 公司于1991 年提出的一个用于访问数据库的统一界面标准,是应用程序和数据库系统之间的中间件。它通过使用相应应用平台上和所需数据库对应的驱动程序与应用程序的交互来实现对数据库的操作,避免了在应用程序中直接调用与数据库相关的操作,从而提供了数据库的独立性。 

    ODBC 主要由驱动程序和驱动程序管理器组成。驱动程序是一个用以支持ODBC 函数调用的模块,每个驱动程序对应于相应的数据库,当应用程序从基于一个数据库系统移植到另一个时,只需更改应用程序中由ODBC 管理程序设定的与相应数据库系统对应的别名即可。驱动程序管理器可链接到所有ODBC 应用程序中,它负责管理应用程序中ODBC 函数与DLL 中函数的绑定。

    ODBC 使用层次的方法来管理数据库,在数据库通信结构的每一层,对可能出现依赖数据库产品自身特性的地方,ODBC 都引入一个公共接口以解决潜在的不一致性,从而很好地解决了基于数据库系统应用程序的相对独立性,这也是ODBC 一经推出就获得巨大成功的重要原因之一。

    unix下著名的ODBC项目有unixodbciodbc,其中iodbc最近有所更新,但是笔者尝试安装没有成功。而且在Google上搜索这两个关键字,unixodbc远高于iodbc,所以笔者肤浅的认为unixodbc要比iodbc更加受欢迎。

unixodbc的官方网站是http://www.unixodbc.org/,目前最新的版本是2.2.14, 地址是:http://www.unixodbc.org/unixODBC-2.2.14.tar.gz

安装步骤:

tar zxvf unixODBC-2.2.14.tar.gz
cd unixODBC-2.2.14
./configure --prefix=/usr/local/unixODBC-2.2.14 --includedir=/usr/include --libdir=/usr/lib -bindir=/usr/bin --sysconfdir=/etc
make
make install

 

这时,unixodbc已经安装完毕,这时候可以使用odbc的通用api进行编程了。

但是如果要操作具体的数据库,还需要相应数据库提供的odbc驱动,比如操作mysqlODBC驱动,下载地址是:http://dev.mysql.com/downloads/connector/odbc/5.1.html

安装步骤:

tar zxvf mysql-5.1.38-linux-i686-icc-glibc23.tar.gz

cd mysql-connector-odbc-5.1.5-linux-x86-32bit

cp lib/* /usr/lib //把该目录下所有的文件拷贝到系统库目录下

./bin/ myodbc-installer //会显示怎么建立数据源

 

根据提示建立数据源,会在/etc/下产生两个文件odbc.ini  odbcinst.ini

其中 odbc.ini内容如下:

[test]

Driver          = /usr/lib/libmyodbc5.so

SERVER          = localhost

UID             = root

PWD             = root

DATABASE                = mysql

PORT            = 3306

 

odbcinst.ini内容如下:

[MySQL ODBC 5.1 Driver]

Driver          = /usr/lib/myodbc5.so

SETUP           = /usr/lib/myodbc3S.so

UsageCount     = 1

 

到此,数据源就建立了,通过下面的cppodbc封装类,就可以对mysql数据库进行操作了。

 

//.h

// CppMysql - A C++ wrapper around the odbc interface library.

//

// Copyright (c) 2009 Rob Groves. All Rights Reserved. [email protected]

//

// Permission to use, copy, modify, and distribute this software and its

// documentation for any purpose, without fee, and without a written

// agreement, is hereby granted, provided that the above copyright notice,

// this paragraph and the following two paragraphs appear in all copies,

// modifications, and distributions.

//

// IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT,

// INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST

// PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION,

// EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

//

// THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT

// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A

// PARTICULAR PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF

// ANY, PROVIDED HEREUNDER IS PROVIDED "AS IS". THE AUTHOR HAS NO OBLIGATION

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值