libzdb 連接mysql,數據庫連接池庫libzdb使用教程

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

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

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

庫結構如下

c33175a4e6d333d5b23a3a129a1897ba4a81eeda9a8c8fb1.png

首先下載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語句

31cab95ddae2d1587366c648b333c0ac.png

此處T 代表 Connection_T , Connection_execute 用于執行數據庫插入、更新、刪除等操作。Connection_executeQuery用于數據庫查詢,返回結果集。

4、

游標移動至結果集下一行intResultSet_next (ResultSet_T R), 結果無下一行則返回false ,否則返回true。關于結果集其他操作函數如下

c6f3a6c2ac680e6d9bda3a0577688ee2.png

直接貼代碼就好理解了:

#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;

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534817.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534817.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534817.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

請給出計算231-1的python表達式_【填空題】計算2 32 -1的Python表達式可以書寫為____...

【填空題】計算2 32 -1的Python表達式可以書寫為____更多相關問題【判斷題】軍隊和國防建設指導思想實行戰略轉變的實質是:從立足于早打、大打、打核戰爭的臨戰準備狀況,轉到和平時期建設的軌道上來。【單選題】社會學家認為,一門專業必須具有專業特征,護理專業的特征是( )A. 滿…

數值分析方程求根實驗matlab,數值分析實驗之非線性方程求根(MATLAB實現)

一、實驗目的1. 了解一般非線性方程的求根是比較復雜的事情:要討論(或知道)它有無實根,有多少實根;知道求近似根常用的幾種方法,每種方法的特點是什么。2. 用通過二分法(區間半分法)、不動點(也Picard)迭代…

python多線程輸出_萌新python多線程

剛開始學習多線程的時候鬧了個笑話在使用python線程打印東西的時候發現自己定的的線程數據沒有打印,找半天都沒有找到問題,也沒好意思問,自己憋了半天才發現問題!代碼如下:import threadingdef SayHi():print(say hi !)def SeyHello():print(say hello !)print(start)threading…

php5.6擴展編寫,php 5.6版本中編寫一個PHP擴展的簡單示例

php 5.6版本中編寫一個PHP擴展的簡單示例這篇文章主要介紹了php 5.6版本中編寫一個PHP擴展的簡單示例,本文給出擴展實現代碼、編譯方法、配置方法和使用例子等內容,需要的朋友可以參考下有時候在php本身沒有滿足需求的api時候,需要自己寫相應的擴展,擴展…

iis php 數據庫亂碼,如何解決php插入數據亂碼問題

php插入數據亂碼的解決辦法:首先要設置數據表的字符集為utf8;然后修改字符集格式;接著建立字符集為utf-8的數據庫;最后通過php mysql語句插入數據即可。mysql數據庫亂碼問題解決辦法我們在使用數據庫(mysql)的時候最怕的就是數據庫…

python 文檔字符串_新款Python文檔字符串生成器來了

又一款懶人神器問世了:Visual Studio Code的擴展,基于CodeBERT的Python文檔字符串生成器。看來現在,這群偷「懶」的程序員們連文檔字符串都不想自己寫了。基于CodeBERT的生成器跟正常的DocStrings用法一樣,你只需要輸入三引號「“…

php 棧實現歷史記錄后退,棧:如何實現瀏覽器的前進和后退功能

受限制的線性表先進后出實現一個棧數組實現叫順序棧public class ArrayStack {private String[] items;//存儲數據的數組private int count;//棧中的元素private int n;//棧的大小public ArrayStack(int n){this.items new String[n];this.n n;this.count 0;}//入棧操作publ…

vc 通過句柄修改窗口大小_VC應用(1)通過VC修改銷售訂單行項目的字段

VC是SAP中非常重要的功能,過去多年來,我參與了不少使用VC的項目,我將通過多篇文章介紹VC的一些應用,本文介紹通過VC修改銷售訂單行項目的字段01 概覽在銷售訂單創建時,對于可配置物料來說,不同的配置可能會…

mysql增加實例,MySQL的簡單使用筆記:增加實例以及啟動

增加實例增加實例這里指的的在源碼編譯安裝完MySQL之后建立一個初始的數據庫實例,占用某一端口,或者是使用新端口啟動新的mysqld進程。MySQL需要一些基礎的數據庫以及表來完成基本的設定,比如控制連接的mysql.user表:123456789101…

springboot starter工作原理_98,談談SpringBoot的工作原理

對技術的探索,一切源于好奇心,保持好奇心,才能讓人更年輕。至今,我們已經有了很多創建SpringBoot項目的經驗,比如我們要創建一個支持web開發的項目,我們只需要引入web-starter模塊即可。那么,Sp…

精英主義 遺傳算法 matlab,遺傳算法優化 - osc_lfs4vsih的個人空間 - OSCHINA - 中文開源技術交流社區...

1.遺傳算法簡介遺傳算法是一種基于自然選擇和群體遺傳機理的搜索算法,它模擬了自然選擇和自然遺傳過程中的繁殖、雜交和突變現象.再利用遺傳算法求解問題時,問題的每一個可能解都被編碼成一個“染色體”,即個體,若干個個體構成了群體(所有可能解).在遺傳算法開始時,總是隨機的產…

python 類靜態屬性_如何從Python中的類中引用靜態屬性?

您面臨的問題是因為您不了解類聲明的作用域是如何工作的。類聲明在其自己的作用域內執行。執行完成后,將創建一個新的類對象,并將獲得的范圍作為其__dict__附加到該類。在注意:類范圍是從方法范圍內搜索的而不是!這意味著當在方法…

php后臺管理員登錄密碼錯誤,如果后臺管理員的密碼錯誤,我該怎么辦,還有兩種找回密碼的方法...

Dedecms是中國著名的網站管理核心. 由于編織夢想簡單易用,因此可以進行二次開發,并且可以實現各種網站. 在使用dedecms的過程中,如果忘記了夢想管理后臺的密碼怎么辦?神山個人博客分享了兩種修改(重置)管理員密碼的方法.1. 下載織…

python logging模塊 默認_python logging模塊

函數式簡單配置importlogginglogging.debug(debug message) #計算或者工作的細節logging.info(info message) #記錄一些用戶的增刪改查的操作logging.warning(warning message) #警告操作logging.error(error message) #警告操作logging.critical(critical message) #批判的 直…

mac安裝多php環境變量配置,Mac如何安裝多個php版本

Mac安裝多個php版本的方法:首先打開Mac上的終端工具,并確認安裝Homebrew;然后安裝【php5.5】及對應擴展;最后執行指令【brew unlink php55】刪除brew中php的軟鏈即可。Mac安裝多個php版本的方法:1、打開Mac上的終端工具…

phpexcel 獲取工作簿名稱_工作分享 | Excel快速匯總考勤

點擊藍字關注我們每月月底,各位同事把考勤表報到部門后,檢查核對再匯總一份總考勤表上報,傳統的復制粘貼總是占用不少時間,還容易出錯。為提高工作效率,現利用Excel實現考勤快速匯總。01 統一考勤模板,每個…

php進程通訊方式,PHP進程模型、進程通訊方式、進程線程的區別分別有哪些?

PHP進程模型是一個正在執行的程序,可以分配給處理器并由處理器執行的一個實體;PHP進程通訊方式有管道及有名管道,信號,共享內存等;PHP進程線程的區別有進程是資源的分配和調度的一個獨立單元,而線程是CPU調…

iphone怎樣關閉副屏_小米新設計專利曝光:“Z”型折疊屏手機

折疊屏手機可以說是最近幾年的熱門話題,雖然并未大面積普及,但已有多家廠商量產上市了旗下的折疊屏手機。同樣作為知名廠商的小米,曾在此前展示過旗下的折疊屏手機視頻,但并未真正發布。而近日曝光的一份小米旗下專利設計則表明小…

php socket開發斗地主,基于狀態機模型的斗地主游戲(NodeJsSocketIO)

1. 系統結構系統考慮使用Nodejs和SocketIo實現服務器端邏輯,前端使用HTML5。2. 邏輯流程1 . 主要邏輯包括用戶進入游戲、等待對家進入游戲、游戲過程、結束統計這4個過程。2 . 游戲過程的邏輯具體如下3 . 服務器-客戶端通訊邏輯如下3. 客戶端界面設計1 . 登錄界面2 …

python幾何拼貼畫_圖形幾何圖形拼貼畫

四邊形教學內容:教材第34頁?——36頁教學目標:1.直觀感知四邊形,能區分和辨認四邊形,知道四邊形的特征.進一步認識長方形和正方形,知道它們的角都是直角.2.通過畫一畫、找一找、拼一拼等活動,培養學生[此文轉于斐斐課件園?FFKJ.Net]的觀察比較和概括抽象的能力,發展空間想象能…