C語言封裝sqlite3 API

2021-07-11 10:57:35 字數 2585 閱讀 1555

//執行類似insert,update,create,drop這些不需要結果的sql語句。

int executenoquery(sqlite3 *db,const char *sql)

if(sqlite3_step(pstmt) != sqlite_done)

if(pstmt != null)

sqlite3_finalize(pstmt);

return 0;

}

//執行select查詢語句

void executewithquery(sqlite3 *db,char ***result,int *col,const char *sql)

(*result)[(row+1)*(*col)] = null;

return;

}

呼叫規則:

executenoquery:

只需傳入資料庫連線,和想要執行的sql語句

executewithquery:除了需要傳入資料庫連線,以及最後乙個引數sql語句,還需要傳入char **array,和int ncol的位址

下面是乙個例子:

#include #include #include #include #define printerror(str)	\

dowhile(0)

const char *createsql = "create table if not exists t_students\

(s_id integer primary key not null,\

s_name varchar(128),s_age integer,\

time timestamp not null default (datetime('now','localtime')));";

const char *deletesql = "delete from t_students where s_name='saga***n';";

const char *updatesql = "update t_students set s_age=25 where s_name='saga***n';";

const char *insertsql = "insert into t_students (s_name,s_age) values('saga***n',23);";

const char *selectsql = "select s_name,s_age from t_students;";

int executenoquery(sqlite3 *db,const char *sql);

int executewithquery(sqlite3 *db,char ***result,int *col,const char *sql);

int main()

; char **array;

ret = sqlite3_open("stu.sqlite",&conn);

if(ret != sqlite_ok)

printerror(sqlite3_errmsg(conn));

//create table

ret = executenoquery(conn,createsql);

if(ret == -1)

printerror(sqlite3_errmsg(conn));

ret = executenoquery(conn,insertsql);

if(ret == -1)

printerror(sqlite3_errmsg(conn));

ret = executewithquery(conn,&array,&ncol,selectsql);

if(ret == -1)

printerror(sqlite3_errmsg(conn));

i=0;

while(array[i+ncol] != null)

sqlite3_free_table(array);

ret = executenoquery(conn,updatesql);

if(ret == -1)

printerror(sqlite3_errmsg(conn));

if(conn != null)

sqlite3_close(conn);

return 0;

}int executenoquery(sqlite3 *db,const char *sql)

if(sqlite3_step(pstmt) != sqlite_done)

sqlite3_finalize(pstmt);

return 0;

}int executewithquery(sqlite3 *db,char ***result,int *col,const char *sql)

(*result)[(row+1)*(*col)] = null;

return 0;

}

注意:

呼叫完executewithquery之後,記得釋放array

sqlite3 api學習筆記

sqlite3中有5種資料型別 int real text null blob 但sqlite3中的列的資料型別不是固定的,列的資料型別隨著實際插入的資料的格式而定 在sqlite3中使用sql時,有乙個非常有趣而有強大的概念 相似型別。引入相似型別的概念,主要是為了相容各種資料庫 sqlserve...

sqlite3 C語言程式設計

sqlite資料庫操作例程 plain view plain copy include include include int main memset sql,0 128 strcpy sql,create table student id integer,name varchar 10 f flo...

C 封裝SQLite例項《二》

這一篇部落格主要講如何使用sqlite有關庫函式去管理資料庫中的一張表。主要用到的函式 sqlite api int sqlite3 get table sqlite3 db,the database on which the sql executes const char zsql,the sql...