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-1.5.4.tar.gz"是一个开源软件库的归档文件,它属于Apache Portable Runtime (APR)项目的一部分。APR是一个为各种操作系统提供统一API的库,主要用于处理底层系统功能,如文件I/O、网络通信、进程...
3. 下载源码:访问Apache官网下载APR、APR-Iconv和APR-Util的最新源码包,如apr-1.5.x.tar.gz、apr-iconv-1.2.x.tar.gz和apr-util-1.6.x.tar.gz。 4. 解压源码:使用`tar -zxvf 文件名`解压下载的源码。 5. 配置、...
2. **获取源代码**:从Apache官方仓库下载`apr-util`的源代码包,例如这里的`apr-util-1.6.0`。解压后进入源代码目录。 3. **配置步骤**:运行`./configure`脚本来检查系统环境并生成适合当前系统的Makefile。这个...
1. 数据库接口:apr-util支持多种数据库系统,包括MySQL、PostgreSQL、Oracle等,通过一个统一的API,简化了数据库操作的复杂性。 2. 加密算法:库内集成了OpenSSL,提供了MD5、SHA-1等常见的哈希算法,以及AES、...
Apache全套安装包(apr,apr-util,pcre) 适用于Linux系统。 包含了安装Apache的web...apr-util-1.4.1 pcre-8.33 使用make方式安装。 具体安装方式请参考我的下载资源,搜索“Apache2.4.6在Linux中安装及配置自启动”
"apr-util-1.5.1.tar.gz" 是Apr-Util 1.5.1版本的源码压缩包,通过解压缩并编译安装,可以解决依赖问题。 首先,我们需要了解Apr-Util的基本概念。它是Apache软件基金会开发的 APR(Apache Portable Runtime)的一...
《apr-util-1.2.12:Apache Portable Runtime Utility Library的深度剖析》 在开源软件的世界里,Apache Portable Runtime( APR)库是许多项目的基础,尤其是那些基于Apache HTTP服务器的项目。APR提供了一组操作...
在本案例中,我们关注的两个关键组件是`apr-1.5.2.tar.gz`和`apr-util-1.5.2.tar.gz`。 `apr`全称为"Apache Portable Runtime",它是Apache项目的一个核心部分,提供了一组跨平台的底层系统接口。这些接口包括文件I...
标题中的"apr-1.5.2和apr-util-1.5.4.tar.gz"指的是Apache Portable Runtime( APR)库的1.5.2版本和与其配套的Apache Portable Runtime Utilities(APR-Util)1.5.4版本的源代码压缩包。这两个组件在开源软件开发...
标题中的"apr-util-1.5.2.tar"和"apr-1.5.2.tar"是两个重要的软件组件的源代码包,分别代表Apache Portable Runtime Utility和Apache Portable Runtime的特定版本。Apache Portable Runtime( APR)是Apache HTTP...
本文将详细解析标题和描述中提到的几个关键压缩包:`apr-1.4.6.tar.gz`、`apr-iconv-1.2.1.tar.gz` 和 `apr-util-1.4.1.tar.gz`,这些都是Apache安装的重要组成部分。 首先,`apr-1.4.6.tar.gz` 是APR库的主要版本...
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-0.9.19.tar.gz" 是一个包含 apr-util 软件包的压缩文件,这种格式通常是 Linux 和 Unix 类操作系统中常见的软件分发方式。apr-util 是一个重要的开源库,它与 Apache Portable Runtime (APR) 库紧密关联,...
apr-util-1.6.1.tar.gz下载。。
在我们讨论的这个版本——apr-util-1.3.9.tar.gz中,包含了apr-util的源代码和其他相关资源,为开发者提供了一个方便的下载包。 首先,让我们了解什么是apr-util。Apr是Apache Portable Runtime的缩写,它是一个跨...
安装apr-util 1.3.7通常涉及下载源码包"apr-util-1.3.7.tar.gz",解压后进行编译和安装。在编译前,需要先安装apr库,并确保系统具备必要的编译工具和依赖。安装完成后,开发者可以通过头文件和库文件来调用其提供...
《Apache库文件apr-util-1.4.1在CentOS 6.2中的应用与解析》 Apache HTTP服务器是世界上最广泛使用的Web服务器软件,而apr(Apache Portable Runtime)和apr-util则是Apache项目的重要组成部分,为Apache提供了底层...
描述中同样提到"apr-util-1.3.12.tar",这表明提供的信息是一个特定版本的源码包,可以通过解压缩并编译来安装和使用。在Linux或类UNIX系统中,通常会使用tar命令来提取这个文件,然后通过配置、编译和安装步骤来...