標籤:static 學習 exit sqlite3 ... ace fprintf use opened
資料庫的基本內容前面都已經說得差點兒相同了。接下看看如何在C語言中使用sqlite。
一 介面
sqlite3_open(const char *filename, sqlite3 **ppDb)
開啟資料庫,假設資料庫不存在則建立一個資料庫,並開啟
sqlite3_close(sqlite3*)
關閉資料庫。假設關閉之前還存在沒有運行完的語句,將會返回SQLITE_BUSY
二 執行個體
1 檔案夾結構
Projects{
main.c// 代碼所在檔案
sqlite{// 官網下載下來的sqlite壓縮包解壓之後的檔案檔案夾
shell.c// 本檔案在項目中實際上是用不上的。這個檔案是用來產生sqlite命令工具的,詳細能夠參考:sqlite學習筆記1
sqlite3.c
sqlite3.h
sqlite3ext.h
}
}
2 源碼
// main.c#include <stdio.h>#include <stdlib.h>#include "sqlite/sqlite3.h"#define DB_NAME "hanfeng.db"int main(){ sqlite3* db = NULL ; char* msg = NULL ; int ret = 0 ; ret = sqlite3_open(DB_NAME, &db); if (ret){ fprintf(stderr, "error open datebase:%s\n.", DB_NAME) ; exit(0) ; } else{ fprintf(stdout, "successfully open datebase.\n") ; } sqlite3_close(db) ; return 0;}
為了今後擴充方便,現將代碼改動例如以下:
#include <stdio.h>#include <stdlib.h>#include "sqlite/sqlite3.h"#define DB_NANE "sqlite/test.db"sqlite3 *db = NULL;char* sql = NULL;char *zErrMsg = NULL;int ret = 0;typedef enum{ false, true} bool;static int callback(void *NotUsed, int argc, char **argv, char **azColName){ int i = 0; for(i=0; i < argc; i++){ printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL"); } printf("\n"); return 0;}bool connectDB(){ ret = sqlite3_open(DB_NANE, &db); if( ret != SQLITE_OK){ fprintf(stderr, "Error open database: %s\n", sqlite3_errmsg(db)); sqlite3_free(zErrMsg); return false; } fprintf(stdout, "Successfully opened database\n"); return true;}bool closeDB(){ int ret = 0; ret = sqlite3_close(db); if ( ret == SQLITE_BUSY ){ return false; } return true;}int main(int argc, char* argv[]){ connectDB(); closeDB(); return 0;}
3 編譯執行
執行有兩種方式,基於前面的筆記。我們並沒有配置sqlite的環境。不過下載解壓得到列一個目錄sqlite,因此。須要用例如以下命令:
gcc -o main main.c ./sqlite/sqlite3.c -lpthread -ldl
假設下載配置安裝了sqlite,則須要將上面的標頭檔包括改為:
#include <sqlite3.h>
然後運行命令:
gcc -o main main.c -lsqlite3
命令運行完畢之後會產生一個叫main的可運行檔案,輸入:
./main
既能夠看到結果。
#在編譯時間使用g++會報錯: error: invalid conversion from ‘const void*’ to ‘const char*’
g++貌似對類型轉換要求更為嚴格,不支援這種轉換。
路過的大俠,知道如何用g++編譯的,請不吝賜教......
sqlite學習筆記7:C語言中使用sqlite之開啟資料庫