/*
SQLite資料庫SQLite是一個開源的嵌入式關系資料庫,在2000年由D.Richard Hipp釋出。SQLite能夠減少應用程式管理資料庫的開銷,可逢移植性好,高效而且可靠。SQLite嵌入到應用程式中,與應用程式共用相同的程序空間,而不是單獨的一個程序。從外部看,SQLite并不像一個關系資料庫,但在程序内部,卻是完整的、自包含的資料庫引擎。
*/
//應用到的函數:
sqlite3_open(); //打開資料
sqlite3_exec(); //執行SQL語句
sqlite3_close() //關閉資料
/*
函數參數介紹
*/
//打開資料
int sqlite3_open( //打開資料庫,并得到資料句柄
"temp.db", //要打開的資料庫檔案名,如果沒有者建立個資料庫檔案
&db //儲存打開資料庫的資料庫指針
);
//執行SQL語句
typedef int (*sqlite3_callback)( //sqlite3_exec()的回調函數
void * para, //可傳入指針(比如結構指針)要經過強制轉換才能用
int n_column, //記錄有多少個字段(即這條記錄有多少列)
char ** column_value, //個關鍵值,查出來的資料都儲存在這裡
char ** column_name //跟前個char**是對應的,表示這個字段的字段名稱
);
int sqlite3_exec( //執行SQL語句,沒有傳回值的3,4直接NULL
sqlite3*, //資料庫句柄
const char *sql, //要執行的資料語句字元串的首位址
int (*callback)(void*,int,char**,char**), //(*sqlite3_callback)的位址
void *, //Callback函數第一個參數指針
char **errmsg //執行完所有SQL傳回0,否者傳回錯誤代碼
);
int sqlite3_close( //關閉之前打開的資料庫
sqlite3 * //要關閉的資料指針
);
//應用例子
#include <stdio.h>
#include <string.h>
#include "sqlite3.h"
//sqlite3的回調函數
//sqlite每查到一條記錄,就調用一次這個回調
//回調函數原型:typedef int (*sqlite3_callback)(void*,int,char**,char**);
int LoadMyInfo(void* para,int n_column,char** column_value,char** column_name)
{
int i;
printf("記錄包含%d個字段\n\n",n_column);
for(i=0; i<n_column; i++)
{
printf("字段名:%s\t字段值:%s\n\n", column_name[i], column_value[i]);
}
printf("------------------------------\n");
return 0;
}
int main(int argc, char *argv[])
{
sqlite3 * db;
int result;
char * errmsg = NULL;
result = sqlite3_open("temp.db",&db);
//資料庫操作代碼
/*建立一個測試表,表名叫MyTable,有2個字段:ID和name。其中ID是一個自動增加的類型,以後insert時可以不去指定這個字段,它會自己從0開始增加*/
// result = sqlite3_exec(db,"create table MyTable(ID integer primary key autoincrement,name nvarchar(32))",NULL,NULL,&errmsg);
//插入一些記錄
/*
result = sqlite3_exec(db,"insert into MyTable(name) values('走路')",0,0,&errmsg);
result = sqlite3_exec(db,"insert into MyTable(name) values('騎單車')",0,0,&errmsg);
result = sqlite3_exec(db,"insert into MyTable(name) values('坐汽車')",0,0,&errmsg);
*/
//開始查詢資料庫
result = sqlite3_exec(db,"select * from MyTable",LoadMyInfo,NULL,&errmsg);
//關閉資料庫
sqlite3_close(db);
return 0;
}
點選程式源代碼下載下傳