嵌入式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_2、XX_3、XX_4则为字段(可联想为EXCEL表格的表头信息, 如下图);
XX_2 | XX_3 | XX_3 |
《插入数据》
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则是要插入的内容,以此方式插入,其插入的内容不需要满足数据库格式要求,即不需要数据库有几列就必须插入几列。
《查找数据》
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的内容
《更新数据》
update XX_1 set XX_2 = va_2_1 where XX_3 = va_3;
功能:更新XX_1数据库中XX_3字段值为va_3的行,将此行XX_2列数据更新为va_3.
2.函数接口
主要有四个函数,他们分别是:
《打开数据库》
1.int sqlite3_open(char *path, sqlite3 **db);
功能:打开sqlite数据库,成功返回SQLITE_OK, 失败则返回错误码。
char *path为数据库路径。
sqlite3 **db为数据库操作句柄。
《关闭数据库》
2.int sqlite3_close(sqlite3 *db);
功能:关闭sqlite数据库, 成功返回SQLITE_OK,失败则返回错误码。
sqlite3 **db为数据库操作句柄。
《获得错误信息》
3.const char *sqlite3_errmsg(sqlite3 *db);
功能:返回错误信息。
sqlite3 **db为数据库操作句柄。
《执行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,失败返回错误码。
需要注意只有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,失败返回错误码。
需要以上练习代码的话点击: