SQLite
1.SQLite的優點
SQLite是一個非常輕量級自包含(lightweight and self-contained)的DBMS,它可移植性好,很容易使用,很小,高效而且可靠。SQLite嵌入到使用它的應用程序中,它們共用相同的進程空間,而不是單獨的一個進程。從外部看,它並不像一個RDBMS,但在進程內部,它卻是完整的,自包含的數據庫引擎。
嵌入式數據庫的一大好處就是在你的程序內部不需要網絡配置,也不需要管理。因爲客戶端和服務器在同一進程空間運行。SQLite 的數據庫權限只依賴於文件系統,沒有用戶帳戶的概念。SQLite 有數據庫級鎖定,沒有網絡服務器。它需要的內存,其它開銷很小,適合用於嵌入式設備。你需要做的僅僅是把它正確的編譯到你的程序。
2.常用命令介紹
2.1.sqlite3 指令(通常以 . 開頭)
2.1.1創建或打開一個數據庫文件
在終端下運行 sqlite3 name.db 指令,<name.db> 是要打開的數據庫文件。若該文件不存在,則自動創建。name爲數據庫名稱。
由於其他的命令在創建之後便比較簡單,這裏就不一一舉例,大概有下列命令;
- 顯示當前打開的數據庫文件:sqlite > .database。
- 顯示數據庫中所有表名:sqlite > .tables。
- 查看錶的結構:sqlite > .schema <table_name>。
- 顯示所有命令:sqlite > .help。
- 退出 sqlite3:sqlite > .quit。
2.2SQL命令(每個命令以 ;結束)
2.2.1.創建新表
sqlite > create table <table_name> (f1 type1, f2 type2,...);
type爲數據類型:NULL,INTEGER,REAL,TEXT,BLOB
注意:若未指定類型,默認是字符串,向表中添加新紀錄時要加 “”;
2.2.2.刪除表
sqlite > drop table <table_name>;
從上圖可以看到,我又重新創建了一個表user3,執行刪除命令後,就只有usr2表了。
後面更多的命令使用方法和上面兩個相同,我就不一一舉例了:
- 查詢表中所有記錄
sqlite >select * from <table_name>;
- 按指定條件查詢表中記錄
sqlite >select * from <table_name> where <expression>;
- 向表中添加新紀錄
sqlite >insert into <table_name> values(value1,value2,...);
- 按指定的條件刪除表中記錄
sqlite >delete from <table_name> where <expression>;
- 更新表中記錄
sqlite > updata <table_name> set <f1=value1>,<f2=value2>... where <expression>;
- 在表中添加字段
sqlite > alter table <table> add column <field><type> defalut... ;
3.SQLite編程函數
3.1sqlite3_open()
函數原型:
int sqlite3_open(const char *fileName, sqlite3 **ppDB);
函數功能:打開一個數據庫;若該數據庫文件不存在,則自動創建。打開或者創建數據庫的命令會被緩存,直到這個數據庫真正被調用的時候纔會被執行。
輸入參數:fileName,待打開的數據庫文件名稱,包括路徑,以’\0’結尾;特別說明:SQLite支持內存數據庫,內存方式存儲使用文件名“:memory:”
輸出參數:ppDB,返回打開的數據庫句柄;
返回值:執行成功返回SQLITE_OK,否則返回其他值;
3.2sqlite3_close()
函數原型:
int sqlite3_close(sqlite3 *pDB);
函數功能:關閉一個打開的數據庫;
輸入參數:pDB,打開的數據庫句柄;
輸出參數:無
返回值:執行成功返回SQLITE_OK,否則返回其他值;
3.3sqlite3_errmsg()
函數原型:
const char *sqlite3_errmsg(sqlite3 *pDB);
函數功能:獲取最近調用的API接口返回的錯誤說明,這些錯誤信息UTF-8的編碼返回,並且在下一次調用任何SQLiteAPI函數時被自動清除;
輸入參數:pDB,打開的數據庫句柄
輸出參數:無
返回值:錯誤說明的字符串指針
3.4sqlite3_exec()
函數原型:
int sqlite3_exec(sqlite3 *pDB,constchar *sql, sqlite_callback callback,void *para,char **errMsg);
函數功能:編譯和執行零個或多個SQL語句,查詢的結果返回給回調函數callback。
輸入參數:pDB,數據庫句柄;sql,待執行的SQL語句字符串,以’\0’結尾;callback,回調函數,用來處理查詢結果,如果不需要回調(比如做insert或者delete操作時),可輸入NULL;para,用戶傳入的參數,可以爲NULL,該參數指針最終會被傳給回調函數callback,供用戶在回調函數中使用;
輸出參數:errMsg,返回錯誤信息,注意是指針的指針。
返回值:執行成功返回SQLITE_OK,否則返回其他值。