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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 神十四瞄准6月5日10时44分发射:三名
- 下一篇: 延期四年后!特斯拉终于带车主上“太空”