1. 简介
在Apache2.1版本中引入了DBD 框架,DBD提供了一个统一的、抽象的数据库操作接口,封装了不同数据库之间的接口和实现差异。可以使我们很容易的编写跨数据库(coss-database)的程序。
2. 说明
本文的目的是简单的介绍如何在C开发的程序中开始
使用DBD,而不具体介绍每个API的用法,所有接口的用法在DBD的接口文件apr-dbd.h中有详细的注释。
笔者所用的环境是:
ubuntu-8.04
gcc-4.1.3
3. 安装apr、apr-util及DBD:MySQL驱动
安装apr-util之前肯定要先安装apr,安装过程很简单:
tar zvxf apr-1.3.3.tar.gz
cd apr-1.3.3
./configure --prefix=/usr/local
make
sudo make install
tar zvxf apr-util-1.3.4.tar.gz
cd apr-util-1.3.4
./configure --prefix=/usr/local --with-apr=/usr/local --with-mysql
make
sudo make install
我们这里使用mysql数据库,DBD的MySQL驱动是作为一个DSO动态加载的。
配置apr-util时要带--with-mysql的选项,如果使用sqlite2的数据库则要带--with-sqlite2的选项。要使用其他数据库,输入./configure --help可以查看。
4. 如何使用
关于如何使用可以看apr-util项目中对DBD的测试代码,它是很好的使用DEMO。这里我做一下简单的介绍。
1. 调用
APU_DECLARE(apr_status_t) apr_dbd_init(apr_pool_t *pool)
它主要是创建驱动的hash表,如果驱动是通过DSO动态的加载则创建的hash表为空表。
2. 调用
APU_DECLARE(apr_status_t) apr_dbd_get_driver(apr_pool_t *pool, const char *name,
const apr_dbd_driver_t **driver)
如果驱动是静态编译到apr-util中,则此函数相当于直接从第一步创建的hash表中根据参数name取得driver。如果驱动是使用DSO动态加
载,则函数根据参数name找到动态加载的模块,并将模块驱动加载到driver中。以后就可以用这个driver中提供的和具体数据库相关的操作了。
3. 调用
APU_DECLARE(apr_status_t) apr_dbd_open(const apr_dbd_driver_t *driver,
apr_pool_t *pool, const char *params,
apr_dbd_t **handle)
这个函数返回的是一个对数据库操作的句柄。打开数据库后,以后所有对数据库的操作都是通过这个句柄来实现。参数params值得一提,没有文档专门的说明
这个值应该传递什么,params的值对不同的数据库传递的值也不同。我分析过MySQL
DBD的驱动代码,对于MySQL来说这里要传的是要打开数据库的几个要素,如:主机名(host),用户名(user),密码(pass),数据库名
(dbname)等等,这些信息组织成一个键值对形式的字符串并以delims = " \r\n\t;|,"
中的任意一种分割,如:params = "host=localhost;user=root;pass=12345;dbname=test"
。
4. 对数据库进行操作
如创建一个表,代码如下:
static int create_table(apr_pool_t* pool, apr_dbd_t* handle, const apr_dbd_driver_t* driver)
{
int rv = 0;
int nrows;
const char *statement = "CREATE TABLE apr_dbd_test ("
"col1 varchar(40) not null,"
"col2 varchar(40),"
"col3 integer)" ;
rv = apr_dbd_query(driver, handle, &nrows, statement);
return rv;
}
关于操作数据库的其他API我不做多余的介绍,因为apr-dbd.h中已经有非常详细的注释了,并且你也可以查看apr-util中队DBD的测试程序,它们简直是使用DBD API入门的教科书,这里有两个测试程序,分别是:
1. test/dbd.c 它没有使用apr的测试框架,直接是把常用的数据库的操作都做了一遍,使用哪一个数据库驱动由你输入的命令行参数决定。
2 test/testdbd.c 它应用了apr的测试框架,和1差不都,我这里就不累述了。
分享到:
相关推荐
apr-util linux 编译成功 apr-util linux 编译成功 apr-util linux 编译成功 apr-util linux 编译成功 apr-util linux 编译成功
3、apr-util-1.6.1.tar 报错: fatal error:expat.h:no such file or directory #include compile interrupt make[1]: *** [xml/apr_xml.lo] error 1 make[1]: 离开目录“/usr/local/apr-util-1.6.1” make: **...
apr-util-1.5.4.tar.gz
apr-util-1.6.1.tar.gz下载。。
apr-1.5.2和apr-util-1.5.4.tar.gz
apr-util-1.5.2.tar.gz和apr-1.5.2.tar.gz
Apache全套安装包(apr,apr-util,pcre) 适用于Linux系统。 包含了安装Apache的web...apr-util-1.4.1 pcre-8.33 使用make方式安装。 具体安装方式请参考我的下载资源,搜索“Apache2.4.6在Linux中安装及配置自启动”
linux和windows版本:apr,apr-iconv和apr-util安装包
apr-util-ldap-1.3.9-3.el6_0.1.i686.rpm是centos工具包。
apr-util-1.3.10.tar.gzapr-util-1.3.10.tar.gz
apr-util-1.2.12.tar.gz
apr-util-1.3.9-3.el6_0.1.x86_64.rpm apr-util-1.3.9-3.el6_0.1.x86_64.rpm
apr-util-1.5.1.tar.bz2,apr-util-1.5.1.tar.bz2,apr-util-1.5.1.tar.bz2
apr-1.5.2和apr-util-1.5.2.tar.gz-CSDN下载
apr-util-0.9.19.tar.gz apr-util 软件包
Linux安装Apache时,提示缺少Apr-Util,下载后将此压缩包解压缩后安装即可解决。
apache安装必不可少.apr-1.4.6.tar.gz、apr-iconv-1.2.1.tar.gz、apr-util-1.4.1.tar.gz
apache配置apache配置apache配置apache配置apache配置apache配置apache配置apache配置apache配置apache配置apache配置apache配置apache配置apache配置apache配置apache配置apache配置apache配置apache配置apache配置...
apr-1.5.2.tar.gz apr-util-1.5.4.tar.gz httpd-2.2.32.tar.gz pcre-8.31.tar.gz
apr-util-1.3.12.tar.gz 这是ActiveMQ中间件需要用的代码库