日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

libzdb 连接mysql,数据库连接池库libzdb使用教程

發布時間:2025/3/8 数据库 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 libzdb 连接mysql,数据库连接池库libzdb使用教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Libzdb挺強大, 支持Mysql Oracle SQLite PostgreSQL,支持C和C++ Object C,不能在Window下用(看源碼是因為基于Linux線程機制編寫實現)。

遺憾的是找個資料太費勁,只能到Libzdb官網:點此進入?,今正看著上面英文文檔,突然網站就登不進去了,才發現國內論壇其實搜不出什么資料。

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

庫結構如下

首先下載libzdb的源碼安裝包,解壓,在目錄下執行./configure ?make make install 安裝。。以我自己為例,裝完后再/usr/local/lib下有對應庫文件

源碼安裝包 ?點此下載

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):voidConnection_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** argv)

{

URL_T url = URL_new("mysql://localhost/AllinpayDB?user=root&password=root");

if(url==NULL)

{

printf("URL parse ERROR!

");

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

//輸出全部連接數目

printf("ALL NUMBE:%d

",ConnectionPool_size(pool));

//輸出活動連接數目

printf("ACTIVE NUMBER:%d

",ConnectionPool_active(pool));

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

{

//獲取列名 ResultSet_getColumnName

//獲取列值 ResultSet_getString

printf("column: %s

",ResultSet_getColumnName(result,2));

//根據列名獲取值ResultSet_getStringByName

printf("%s

",ResultSet_getStringByName(result,"result_code"));

//根據列索引獲取列值 [注意索引是從1開始不是0]

printf("%s

",ResultSet_getString(result,3));

}

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

Connection_close(con);

//將連接池與數據庫分離

ConnectionPool_stop(pool);

ConnectionPool_free(&pool);

URL_free(&url);

return 0;

}

總結

以上是生活随笔為你收集整理的libzdb 连接mysql,数据库连接池库libzdb使用教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。