SQLite是一個著名的免費數據庫(不管是商用還是私人使用都免費),已經向眾多公司如Adobe, Airbus, Apple, google, GE, Microsoft等提供了支持。
SQLite不像其它多數的SQL數據庫,它沒有一個獨立的服務進程,它是獨立的、無進程的數據庫(用起來它也像一個語言庫),它對數據的讀寫操作是直達磁盤的。
下面我們使用C語言來試用一個SQLite
1 先到http://www.sqlite.org/download.html下載你的操作系統所對應的文件
對方C語言的操作來說,只需要源碼就可以了:
Source Code
sqlite-autoconf-3080701.tar.gz
(1.91 MiB)
一般而言我們也需要使用命令行對數據庫中的數據進行增刪改查操作,所以也下載下面的這兩個文件:
Precompiled Binaries for Windows
sqlite-shell-win32-x86-3080701.zip
(303.20 KiB)
sqlite-dll-win32-x86-3080701.zip
(335.37 KiB)
2 在QT Creator中新建一個純C工程(我這里名字叫做sqlite3_test),然后修改main.c為下面這樣樣子
#include <stdio.h> #include <sqlite3.h> static int callback(void *NotUsed, int argc, char **argv, char **azColName){ int i; for(i=0; i<argc; i++){ printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL"); } printf("\n"); return 0; } int main(int argc, char **argv) { sqlite3 *db; char *zErrMsg = 0; int rc; if( argc!=3 ){ fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]); return(1); } rc = sqlite3_open(argv[1], &db); if( rc ){ fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); return(1); } rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg); if( rc!=SQLITE_OK ){ fprintf(stderr, "SQL error: %s\n", zErrMsg); sqlite3_free(zErrMsg); } sqlite3_close(db); return 0; }
3
將sqlite-autoconf-3080701.tar.gz解壓出來,把其中的sqlite3.h拷貝出來放到Qt工程根目錄下。
將sqlite-dll-win32-x86-3080701.zip解壓出來,把其中的sqlite3.dll拷貝到Qt工程目錄下。
將sqlite-shell-win32-x86-3080701.zip解壓出來,把其中的sqlite3.ext拷貝到C:\Windows\System32下面,這樣在CMD命令行窗口下就可以直接運行sqlite3了(shell)。
打開一個CMD窗口,然后到達你的工程根目錄下面,然后運行sqlite3打開SQLite Shell,按下面的操作新建一個數據庫並插入數據,以便於C語言去讀取操作:
sqlite> .tables sqlite> .open test.db sqlite> .tables sqlite> create table tbl1(one varchar(10), two smallint); sqlite> insert into tbl1 values('hello!', 10); sqlite> insert into tbl1 values('goodbye', 20); sqlite> select *from tbl1; hello!|10 goodbye|20
4 設置QT工程的編譯選項
第3步把該要的文件都拷貝到對應的目錄了,然后現在編譯還沒有辦法通過,需要一些設置。
修改sqlite3_test.pro文件(紅色為新增的)
TEMPLATE = app CONFIG += console CONFIG -= app_bundle CONFIG -= qt SOURCES += main.c LIBS += sqlite3.dll include(deployment.pri) qtcAddDeployment()
給應用程序添加運行參數,即從命令行運行的話需要執行sqlite3_test test.db "select * from tbl1"
test.db "select * from tbl1"
5 編譯運行
參考:
Command Line Shell For SQLite http://www.sqlite.org/cli.html
C-language interface to SQLite http://www.sqlite.org/c3ref/intro.html
SQL As Understood By SQLite http://www.sqlite.org/lang.html
SQLite3 C語言API入門 http://www.blogjava.net/xylz/archive/2012/09/25/388519.html
SQLite3 API編程手冊 http://www.cnblogs.com/hnrainll/archive/2011/09/08/2170506.html