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