SQLITE 原始碼在自己工程中的使用
阿新 • • 發佈:2019-01-08
為什麼會有這種需求,因為sqlite的原始碼是純C語言,對於不想額外安裝exe的場合,可以把原始碼嵌入到任何你需要的工程中來使用。
首先,去官網下載到sqlite的原始碼,http://www.sqlite.org/download.html。下載sqlite-amalgamation-3160200.zip版本就可以,其中需要的是.h和.c兩個檔案。將這兩個檔案分別加到你工程的標頭檔案和原始檔內。
在需要使用的地方包含以下標頭檔案#include “sqlite3.h”
一、新建(開啟)一個數據庫
函式:sqlite3_open();
返回值:函式執行結果
舉例:
sqlite3 *db;
int nResult = sqlite3_open("test.db", &db);
if(nResult == SQLITE_OK)
{
qDebug() << "open success";
}
else {
qDebug() << "open fail";
}
如果test.db資料庫存在,則開啟;如果不存在則新建一個名為test的資料庫。
二、建立表
函式:sqlite3_exec();
返回值:函式執行結果
舉例:
char* errmsg;
char* strSql;
nResult = sqlite3_exec(db,"create table stflag_tab(id integer primary key autoincrement,name varchar(100))",NULL,NULL,&errmsg);
if(nResult == SQLITE_OK)
{
qDebug() << "create success";
}
else {
qDebug() << "create fail";
}
其中 errmsg可以返回執行錯誤的具體內容。
也可這樣寫:
strSql = “create table stflag_tab(id integer primary key autoincrement,name varchar(100))”;
nResult = sqlite3_exec(db, strSql, NULL, NULL, &errmsg);
三、增加表中資料
函式:sqlite3_exec();
返回值:函式執行結果
舉例:
strSql = "insert into stflag_tab values ('3', 'xx')";
nResult = sqlite3_exec(db,strSql, NULL,NULL,&errmsg);
nResult = sqlite3_exec(db,"insert into stflag_tab values ('4', 'yrx')", NULL,NULL,&errmsg);
if(nResult == SQLITE_OK)
{
qDebug() << "insert OK";
}
else {
qDebug() << "insert fail";
qDebug() << errmsg;
}
四、更改表中資料
函式:sqlite3_exec();
返回值:函式執行結果
舉例:
strSql = "update stflag_tab set name ='ruwei' where id ='4'";
nResult = sqlite3_exec(db,strSql, NULL,NULL,&errmsg);
if(nResult == SQLITE_OK)
{
qDebug() << "update OK";
}
else {
qDebug() << "update fail";
qDebug() << errmsg;
}
五、查詢資料
函式:sqlite3_get_table();sqlite3_free_table(),查詢完了要釋放
返回值:函式執行結果
舉例:
char** pResult;
int nrow;
int ncolumn;
strSql = "select * from stflag_tab ";nResult = sqlite3_get_table(db, strSql, &pResult, &nrow, &ncolumn, &errmsg);
int nindex =ncolumn;
if(nResult == SQLITE_OK)
{
qDebug() << "select OK";
for(int i=0; i<nrow; i++)
{
for(int j=0; j< ncolumn;j++)
{
qDebug() << pResult[nindex++];
}
}
}
else {
qDebug() << "select fail";
qDebug() << errmsg;
}
sqlite3_free_table(p);
注意:
六、刪除資料
函式:sqlite3_exec();
返回值:函式執行結果
舉例:
strSql = "DELETE FROM stflag_tab";
nResult = sqlite3_exec(db,strSql, NULL,NULL,&errmsg);
if(nResult == SQLITE_OK)
{
qDebug() << "delete OK";
}
else {
qDebug() << "delete fail";
qDebug() << errmsg;
}
執行完所有操作後,記得關閉資料庫sqlite3_close(db)。
最後附上完整的Demo,是在Qt中編譯的,不過看一眼就能明白。上述程式碼全部親自驗證通過。
http://download.csdn.net/detail/sinat_30440627/9739232