C語言SQLite3事務(wù)和鎖的操作實例
本文實例講述了C語言SQLite3事務(wù)和鎖的操作。分享給大家供大家參考,具體如下:
#include <stdio.h> #include <sqlite3.h> static int lib_get_value_callback(void *buf, int argc, char *argv[], char *column_name[]) { printf("argc:%d,%s argv[0]:%s,%s argv[1]:%s\n",argc,column_name[0],argv[0],column_name[1],argv[1]); return 0; } /*! * \fn war_snprintf. * \brief the functions snprintf produce output according to a format. * \param str: the output buffer. * \param size: size allow writting to buffer * \param format: format string * \param ap: variable list * \return success: size written to buffer ; fail or output longer than size: -1 */ int war_vsnprintf(char *str, size_t size, const char *format, va_list ap) { int res; res = vsnprintf(str, size, format, ap); if (res >= size) { //tr_log(LOG_ERROR, "[v]snprintf failed or output longer than buffer!"); printf("[v]snprintf failed or output longer than buffer!\n"); return -1; } else return res; } /*! * \fn war_snprintf. * \brief the functions snprintf produce output according to a format. * \param str: the output buffer. * \param size: size allow writting to buffer * \param format: format string * \return success: size written to buffer ; fail: -1 */ int war_snprintf(char *str, size_t size, const char *format, ...) { int res; va_list ap; va_start(ap, format); res = war_vsnprintf(str, size, format, ap); va_end(ap); return res; } #define CHECK_RC(rc,szInfo,szErrMsg,db) if(rc!=SQLITE_OK)\ {printf("%s error!\n",szInfo);\ printf("%s\n",szErrMsg);\ sqlite3_free(szErrMsg);\ sqlite3_close(db);\ return 0;} int main(int argc, char * argv[]) { sqlite3 *db; char *dbPath="tr.db"; char *szErrMsg = 0; int rc = 0; rc= sqlite3_open(dbPath, &db); if(rc == SQLITE_OK){ printf("open succeed\n"); } else{ printf("open fail\n"); } //char *szSql ="SELECT type, value FROM tr WHERE id=3"; //char *szSql = "insert into tr values(null,-1,'','false','false',0,'',1,0,'','node','')"; char szSql[128]; int i = 1; //char *Sql = "CREATE TABLE tr(id INTEGER PRIMARY KEY,pid INTEGER DEFAULT -1,name TEXT NOT NULL COLLATE NOCASE, rw varchar(5) DEFAULT 'true',getc varchar(5) DEFAULT 'false',noc INTEGER DEFAULT 0,nocc charchar(3) DEFAULT '',nin INTEGER DEFAULT 1,il INTEGER DEFAULT 0,acl varchar(255) DEFAULT '',type varchar(16) DEFAULT 'node',value TEXT DEFAULT NULL,UNIQUE(pid,name));"; //rc=sqlite3_exec(db,Sql,0,0,&szErrMsg); //CHECK_RC(rc,"create table",szErrMsg,db); for(i = 1;i <= 30;i++) { /*begin*/ rc = sqlite3_exec(db,"BEGIN EXCLUSIVE", NULL,NULL, &szErrMsg); CHECK_RC(rc,"begin",szErrMsg,db); war_snprintf(szSql, sizeof(szSql), "insert into tr values(null,%d,'jjhh','true','false',0,'',1,0,'','string','')", i); rc = sqlite3_exec(db,szSql, lib_get_value_callback, 0, &szErrMsg); CHECK_RC(rc,"insert values",szErrMsg,db); if((rc == SQLITE_OK)&&((i%2)==0)) { rc=sqlite3_exec(db,"COMMIT", NULL,NULL, &szErrMsg); CHECK_RC(rc,"insert values",szErrMsg,db); war_snprintf(szSql, sizeof(szSql), "SELECT id, value FROM tr WHERE pid=%d and name='%s'", i,"jjhh"); rc = sqlite3_exec(db,szSql, lib_get_value_callback, 0, &szErrMsg); CHECK_RC(rc,"query values",szErrMsg,db); } else { rc=sqlite3_exec(db,"ROLLBACK", NULL,NULL, &szErrMsg); CHECK_RC(rc,"insert values",szErrMsg,db); } sleep(5); } sqlite3_close(db); printf("happy everyday!"); return 0; }
希望本文所述對大家C語言程序設(shè)計有所幫助。
上一篇:QT網(wǎng)絡(luò)編程UDP下C/S架構(gòu)廣播通信(實例講解)
欄 目:C語言
本文標(biāo)題:C語言SQLite3事務(wù)和鎖的操作實例
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/1320.html
您可能感興趣的文章
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用函數(shù)刪除字符
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)式函數(shù)庫
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對數(shù)怎么表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段函數(shù)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排序法函數(shù)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段函數(shù)
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求階乘


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機(jī)閱讀
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10delphi制作wav文件的方法
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 04-02jquery與jsp,用jquery
- 01-10C#中split用法實例總結(jié)