資料庫連線池庫libzdb的使用方法

2021-10-06 04:08:19 字數 2502 閱讀 5644

libzdb挺強大, 支援mysql oracle sqlite postgresql,支援c和c++ object c,不能在window下用(看原始碼是因為基於linux執行緒機制編寫實現)。

本文主要介紹libzdb函式使用,幫理解英文文件有困難的朋友做下翻譯。

庫結構如下

1 執行緒池根據url物件建立,url物件通過char* 形式的url生成,url中已經包含資料庫型別,資料庫名 使用者密碼等引數。形如:

database://[user:password@][host][:port]/database[?propertyname1][=propertyvalue1]

mysql訪問:

mysql://localhost:3306/test?user=root&password=swordfish

mysql://root:swordfish@localhost:3306/test

oracle訪問:

oracle://localhost:1521/test?user=scott&password=tiger

oracle:///servicename?user=scott&password=tiger

sqlite訪問:

sqlite:///var/sqlite/test.db?synchronous=normal&heap_limit=8000&foreign_keys=on

postgresql訪問:

postgresql://root:swordfish@localhost/test?use-ssl=true

postgresql://localhost:5432/test?user=root&password=swordfish

2、開啟連線池

connectionpool_new(url_t url) 根據url生成連線池物件connectionpool_t,

connectionpool_start(connectionpool_t t); 開啟資料庫連線池(預設連線池大小為5),如果想自定義,需在開啟前使用connectionpool_setinitialconnections函式設定。用法如下:

從資料庫池中獲取乙個連線(此時活動連線+1):connection_t connectionpool_getconnection (t p);

使用完畢後將連線放回連線池(此時活動連線-1):void  connection_close (connection_t c)

或者voidconnectionpool_returnconnection (t p, connection_t connection)

3、獲取連線之後,執行資料庫sql語句

此處t 代表 connection_t , connection_execute 用於執行資料庫插入、更新、刪除等操作。connection_executequery用於資料庫查詢,返回結果集。

4、游標移動至結果集下一行intresultset_next (resultset_t r), 結果無下一行則返回false ,否則返回true。關於結果集其他操作函式如下

#include#include#include#include#include#include#include#include/*

* 編譯方式:gcc main.c -i /usr/local/include/zdb/ -o main -lzdb

* */

int main(int agc,char** ar**)

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 alipaytrans");

//輸出全部連線數目

printf("all numbe:%d\n",connectionpool_size(pool));

//輸出活動連線數目

printf("active number:%d\n",connectionpool_active(pool));

while(resultset_next(result)) //游標滑到下一行

//關閉連線(活動連線-1)

connection_close(con);

//將連線池與資料庫分離

connectionpool_stop(pool);

connectionpool_free(&pool);

url_free(&url);

return 0;

}

資料庫連線池libzdb的使用

在上乙個專案的效能測試中,發現瓶頸主要在對資料庫的操作上,原來的系統對資料庫操作只有乙個連線,而io操作的效率相對於計算的效率而言簡直是一種不可容忍的。所以就產生了在這個專案中使用資料庫連線池這種想法。由於時間比較緊張,碰巧在網上找到了乙個開源的資料庫連線池,所以也就誕生了這篇博文。當然對於技術實力...

資料庫連線池庫libzdb使用教程

libzdb挺強大,支援mysql oracle sqlite postgresql,支援c和c object c,不能在window下用 看原始碼是因為基於linux執行緒機制編寫實現 遺憾的是找個資料太費勁,只能到libzdb官網 點此進入 今正看著上面英文文件,突然 就登不進去了,才發現國內論...

C語言資料庫連線池libzdb

libzdb是乙個資料庫操作c語言庫,包含乙個執行緒安全的連線池。這個庫可以透明地連線到多個資料庫系統。不需要任何配置,連線通過url指定。它提供了乙個物件導向的api。支援mysql,postgresql,sqlite,和 oracle資料庫。libzdb的官方說明的特性 補充 缺點 不支援win...