`
yangzb
  • 浏览: 3506797 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用apr-util中的DBD API

    博客分类:
  • C++
阅读更多

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

    标题中的"apr-util-1.5.4.tar.gz"是一个开源软件库的归档文件,它属于Apache Portable Runtime (APR)项目的一部分。APR是一个为各种操作系统提供统一API的库,主要用于处理底层系统功能,如文件I/O、网络通信、进程...

    linux和windows:apr,apr-iconv和apr-util安装包

    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. 配置、...

    apr-util linux 编译成功

    2. **获取源代码**:从Apache官方仓库下载`apr-util`的源代码包,例如这里的`apr-util-1.6.0`。解压后进入源代码目录。 3. **配置步骤**:运行`./configure`脚本来检查系统环境并生成适合当前系统的Makefile。这个...

    apr-util-1.3.12.tar.gz

    1. 数据库接口:apr-util支持多种数据库系统,包括MySQL、PostgreSQL、Oracle等,通过一个统一的API,简化了数据库操作的复杂性。 2. 加密算法:库内集成了OpenSSL,提供了MD5、SHA-1等常见的哈希算法,以及AES、...

    Apache全套Linux安装包(apr,apr-util,pcre)

    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.tar.gz" 是Apr-Util 1.5.1版本的源码压缩包,通过解压缩并编译安装,可以解决依赖问题。 首先,我们需要了解Apr-Util的基本概念。它是Apache软件基金会开发的 APR(Apache Portable Runtime)的一...

    apr-util-1.2.12.tar.gz

    《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-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

    标题中的"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

    标题中的"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

    本文将详细解析标题和描述中提到的几个关键压缩包:`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库的主要版本...

    apr-util-1.6.1.zip

    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-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.6.1.tar.gz下载。。

    apr-util-1.3.9.tar.GZ

    在我们讨论的这个版本——apr-util-1.3.9.tar.gz中,包含了apr-util的源代码和其他相关资源,为开发者提供了一个方便的下载包。 首先,让我们了解什么是apr-util。Apr是Apache Portable Runtime的缩写,它是一个跨...

    apr-util-1.3.7.tar.gz

    安装apr-util 1.3.7通常涉及下载源码包"apr-util-1.3.7.tar.gz",解压后进行编译和安装。在编译前,需要先安装apr库,并确保系统具备必要的编译工具和依赖。安装完成后,开发者可以通过头文件和库文件来调用其提供...

    apr-util-1.4.1.tar.gz

    《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

    描述中同样提到"apr-util-1.3.12.tar",这表明提供的信息是一个特定版本的源码包,可以通过解压缩并编译来安装和使用。在Linux或类UNIX系统中,通常会使用tar命令来提取这个文件,然后通过配置、编译和安装步骤来...

Global site tag (gtag.js) - Google Analytics