下载,注意版本,使用3.1版本,如果以上的,可以支持c++17,我使用的不需要支持,搞c++17环境有些麻烦

wget http://www.tildeslash.com/libzdb/dist/libzdb-3.1.tar.gz

tar -zxvf libzdb-3.1.tar.gz

./configure

make

make install

ldconfig

以下直接调用

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <zdb/zdb.h>
#include <zdb/Exception.h>
#include <zdb/Connection.h>
#include <zdb/URL.h>
/*
 * 编译方式:gcc main.c -I /usr/local/include/zdb/ -o main -lzdb
 * */
int main(int agc,char** argv)
{
    URL_T url = URL_new("mysql://localhost/media?user=media&password=media1234");
    if(url==NULL)
    {
        printf("URL parse ERROR!\n");
        return 0;
    }
    ConnectionPool_T pool = ConnectionPool_new(url);
    //设置初始化连接数目
    ConnectionPool_setInitialConnections(pool,20);
    //开启线程池
    ConnectionPool_start(pool);
    //从线程池中取出连接(活动连接数+1)
    Connection_T con = ConnectionPool_getConnection(pool);
    //执行SQL语句,返回结果集
    ResultSet_T result = Connection_executeQuery(con, "select * from hy_admin");
    //输出全部连接数目
    printf("ALL NUMBE:%d\n",ConnectionPool_size(pool));
    //输出活动连接数目
    printf("ACTIVE NUMBER:%d\n",ConnectionPool_active(pool));
    while(ResultSet_next(result)) //游标滑到下一行
    {
        //获取列名 ResultSet_getColumnName
        //获取列值 ResultSet_getString
        printf("column: %s\n",ResultSet_getColumnName(result,2));
        //根据列名获取值ResultSet_getStringByName
        printf("%s\n ",ResultSet_getStringByName(result,"username"));
        //根据列索引获取列值 [注意索引是从1开始不是0]
        printf("%s\n ",ResultSet_getString(result,3));
    }
    //关闭连接(活动连接-1)
    Connection_close(con);
    //将连接池与数据库分离
    ConnectionPool_stop(pool);
    ConnectionPool_free(&pool);
    URL_free(&url);
    return 0;
}

 

更多推荐