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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sqlite3_exec

發布時間:2023/12/10 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sqlite3_exec 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
函數:sqlite3_exec(),稱為便捷函數,封裝了好多任務。

??????????函數聲明:

?????????????????? int? sqlite3_exec( sqlite? ?* , const? char * sql , sqlite_callback , void ?*data , char? ** errmmsg) ;? 其中 sqlite* 表示打開的數據庫; sql 為執行的sql語句;callback回

調函數;void ?*data為回調函數的第一個參數指向提供給回調函數的應用程序特定的數據,也是回調函數的第一個參數; errmsg 為錯誤信息,是指向錯誤消息字符串的指針 。

sqlite_exec() 有兩個錯誤消息來源,返回值和可讀的字符串errmsg。


? ? ? ? 注意:如果提供 了errmsg,用來創建錯誤消息的內存是在堆上分布的。 故在調用后,應該檢查一下是否為null值,如果有錯誤發生,使用sqlite3_free()釋放errmsg占用的內存。

? ? ? ? ? ?

? ? ? ? ?在簡單命令中使用sqlite3_ exec( ),實例代碼:

?????????????????? int? main(?int? argc , char? ** argv?)

???????????? {

????????????????????????????? ?sqlite3? *db;

??????????????????????? ??? ? ?char??? *zErr ;

?????????????????????????? ? ? nt?????? rc ;

????????????????????????????? ?char??? *sql;

?????????????????????????????? rc = sqlite3_open_v2( "test.db" ,? &db);

? ? ? ? ? ? ? ? ? ? ? ? ? ???? if( rc) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????? fprintf(stderr , " Can't ?open ?database :%s\n" , sqlite3_errmsg(db));

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????? sqlite3_close(db);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????? exit(1);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? }

? ? ? ? ? ? ? ? ? ? ? ? ?????? sql="create table episodes(id int , name text ) ";

? ? ? ? ? ? ? ? ? ? ? ? ?????? rc = sqlite3_exec(db , ?sql, NULL , ?NULL , &zErr ) ;

? ? ? ??

? ? ? ? ? ? ? ? ? ? ? ? ?????? if(rc ! = SQLITE_OK) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????? if( zErr != NULL ?) {

? ? ? ? ? ? ? ? ? ? ?????????????????????????? fprintf( stderr , " SQL error : %s\n " , zErr);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????? sqlite3_free(zErr) ;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ? ? ?? } ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ???? } ?

? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ?????????? sql = "insert ?into ?episodes values ( 10,'the ?dinner ?party ' )";

? ? ? ? ? ? ? ? ? ? ? ?????????? rc = ?sqlite3_exec(db , sql , NULL ,NULL , &zErr);

? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ???????????? sqlite3_close(db) ;

? ? ? ? ? ? ? ? ? ? ? ??????????? return 0 ;

? ? ? ? ? ? ? ?? }

?? ? ? ? ? ?回調函數的聲明:

? ? ? ? ? ? ? ? ? ? typedef ?int ?( * sqlite3_callback ) (void ?* , int , char ** ,char ** ?);其中void *是為sqlite3_exec()第四個參數提供的數據,int代表字段的數目,char** 便是行中字段名稱的字符串的數組,char**表示字段ing成的字符串數組。

?

? ? ? ? ? ?sqlite3_exec( )允許執行一批命令,并可以通過回調接口收集所有的返回數據。 ? ? ? ? ??

總結

以上是生活随笔為你收集整理的sqlite3_exec的全部內容,希望文章能夠幫你解決所遇到的問題。

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