SQLite3
SQLite是一個輕量級的數據庫。和常用的MySQL大同小異。和MySQL相比,數據類型基本一樣,只是sqlite的指令都是以"."開頭(如:mysql中查看當前有哪些數據庫是“show databases",而sqlite中是".databases")。當然,SQL語句都是一樣的語法規則。
- Host System: Archlinux
- gcc: 4.6.1 20110819
- sqlite3: 3.7.8 20110919
系統一般沒有默認安裝sqlite數據庫,所以先要安裝sqlite3:
- # pacman -S sqlite3
可以使用"sqlite3 + 數據庫名"來打開一個數據庫。
常用函數
- sqlite3_open(const char *filename, sqlite3 **ppDb);
- sqlite3_close(sqlite3 *db);
- sqlite3_exec(sqlite3*, const char *sql, int (*callback)(void*,int,char**,char**), void *, char **errmsg);
這三個函數基本上能完成對sqlite3的所有操作。需要用的頭文件為"sqlite3.h"。
- 打開(新建)數據庫
- sqlite3 *db;
- sqlite3_open("test.db", &db);
- 關閉數據庫
- sqlite3_close(db);
- 執行sql語句(以創建表為例)
- char sql[128];
- memset(sql, '\0', 128);
- sprintf(sql, "%s%s%s", "create table ", "test_tb", "(id INTEGER PRIMARY KEY, data TEXT)");
- sqlite3_exec(db, sql, NULL, NULL, NULL);
sqlite3_exec中第一個和第二個參數的意義很好理解。第三個參數是一個回調(callback)函數。第四個參數可用於給回調函數傳入一個參數。第五個參數為這條sql語句執行後的返回。我試了好幾次,第五個參數的返回值打印出來都是亂碼,所以建議直接查看sqlite3_exec函數的返回指,它返回一個整型的數,可以通過這個數字來得知的執行結果。