嵌入式sqlite3简单应用

1.基本命令

  sqlite3有两种命令:

1、系统命令(以.开头,不需要以;结尾),分别是:.help或者.h(查看帮助内容)   .quit或者.q(退出)、.exit(退出)、.schema或者.s(查看表结构)、.table(查看数据库下所有的表)、.databases(查看打开的数据库)

2、sql命令(不用以.开头,需要以;结尾),分别是:

《创建数据库》

create table XX_1 (XX_2  类型,XX_3 类型, XX_4 类型);

功能:创建数据库XX_1, 表有XX_2、XX_3、XX_4三列 。

其中XX_1 为数据库的名字,XX_2XX_3XX_4则为字段(可联想为EXCEL表格的表头信息, 如下图);

XX_1
XX_2 XX_3 XX_3
     
     

 

嵌入式sqlite3简单应用

    《插入数据》

insert into xx_1 values(va_2, xx_3, xx_4);

功能:插入一行信息。

其中XX_1为数据库名, va_2、va_3、va_4则是要插入的内容,需要注意的是以此方式插入,其插入的内容要完全满足数据库格式要求,即数据库有几列就必须插入几列, 如需插入部分信息则看选择一下命令。

insert into XX_1 (XX_2, XX_3) values (va_2, va_3);

其中XX_1为数据库名,XX_2、XX_3为表头, va_2、va_3则是要插入的内容,以此方式插入,其插入的内容不需要满足数据库格式要求,即不需要数据库有几列就必须插入几列。

嵌入式sqlite3简单应用

《查找数据》

select * from XX_1;

功能:查看数据库XX_1所有信息。

 select XX_2,XX_3 from XX_1;

功能:只查看数据库XX_1中XX_2、XX_3字段的内容。

select * from XX_1 where XX2 = va_2;

功能:查看数据库中XX_2字段值为va_2的内容, 条件可用and(并)和or(或)连接,例如select * from XX_1 where XX_2 = va_2 and XX_3 = va_3;//同时满足XX_2==va_2和XX_3==va_3   select * from XX_1 where XX2 = va_2 and XX_3 = va_3;//满足XX_2 == va_2 或 XX_3 == va_3即可。   

 

《删除数据》

delete from XX_1;

功能:删除数据库XX_1。后可加条件,删除部分内容,如下所示。

delete from XX_1 where XX_2 = va_2;//删除满足XX_2==va_2的内容

嵌入式sqlite3简单应用

《更新数据》

update XX_1 set XX_2 = va_2_1 where XX_3 = va_3;

功能:更新XX_1数据库中XX_3字段值为va_3的行,将此行XX_2列数据更新为va_3.

嵌入式sqlite3简单应用

2.函数接口

 主要有四个函数,他们分别是:

《打开数据库》

1.int sqlite3_open(char *path, sqlite3 **db);

功能:打开sqlite数据库,成功返回SQLITE_OK, 失败则返回错误码。

char     *path为数据库路径。

sqlite3  **db为数据库操作句柄。

嵌入式sqlite3简单应用

《关闭数据库》

2.int  sqlite3_close(sqlite3  *db);

功能:关闭sqlite数据库, 成功返回SQLITE_OK,失败则返回错误码。

sqlite3  **db为数据库操作句柄。

嵌入式sqlite3简单应用

《获得错误信息》

3.const  char  *sqlite3_errmsg(sqlite3  *db);

功能:返回错误信息。

sqlite3  **db为数据库操作句柄。

嵌入式sqlite3简单应用

《执行sql命令》

4.int  sqlite3_exec(sqlite3 *db, const char *sql, int (*callback)(void * para, int f_num, char ** f_value, char **name), void *argv, char **errmsg);

功能:通过程序完成sql命令。

sqlite3  **db为数据库操作句柄。

const char *sq为sql命令。

int (*callback)(void * para, int f_num, char ** f_value, char **name)为回调函数。

void *argv为传给回调函数的参数。

char **errmsg为返回的错误信息。

执行成功返回SQLITE_OK,失败返回错误码。

嵌入式sqlite3简单应用

需要注意只有sql命令为查询命令时才需要回调函数。

其中sql为查询命令时有两种方式:

《使用回调函数》

int (*callback)(void * para, int f_num, char ** f_value, char **name);

功能:没找到一条(行)记录自动执行一次回调函数。

void * para:传给回调函数的参数。

int f_num:记录中包含的字段数目。(一行中有几列)

char ** f_value:包含每个字段值得指针数组。

char **name:包含每个字段名称的指针数组。(每一列的标题)

《不使用回调函数》

int sqlite3_get_table(sqlite3 *db, const char * sql,  char *** resultp, int  *nrow,  int  *ncolumn, char **errmsg);

功能:不使用回调函数执行SQL查询命令。

sqlite3  **db为数据库操作句柄。

const char *sq为sql命令。

char  ***resultp用来指向sql查询语句执行结果的指针。

int  *nrow满足条件的记录数目。(行数)

int  *ncolumn每个记录包括的字段数目。(列)

char **errmsg错误信息的首地址

执行成功返回SQLITE_OK,失败返回错误码。

需要以上练习代码的话点击:

链接:https://pan.baidu.com/s/1ee1Gc8F2wNQji7m5ZUnTGA 
提取码:1dhx

视频链接:https://www.bilibili.com/video/av35056774