当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 学习笔记 > sqlite3数据库详细介绍,为sqlite3数据库学习加速

sqlite3数据库详细介绍,为sqlite3数据库学习加速 时间:2018-08-14      来源:未知

sqlite3数据库从sqlite系统命令,sqlite3 的使用,sqlite3 API 函数接口等这些方面来详细了解sqlite3数据库

安装数据库:sudo apt-get install sqlite3

创建数据库:sqlite3 stu.db必须实现指定数据库名

【1】sqlite系统命令

系统命令以 "."开头普通命令,以";"结束

.schema 查看表的结构

.quit 退出数据库(ctrl + \ 强制退出)

.exit 退出数据库

.help 查看帮助信息

.databases 查看数据库

.table 显示数据库中所有的表的表名

【2】sqlite3 的使用

1)创建一张表create table 表名(字段名称1 字段类型,字段名称2 字段类型, ....);

create table stu(id int, name char[20], sex char , score int);

2)向表中插入一条记insert into 表名 values (字段值1,字段值2,...);

录insert into stu values(1001, 'zhangsan', 'm', 89);

insert into stu (id, name, sex,score) values(1002, 'lisi', 'm', 99);

select * from stu;// 查找所有的记录

select * from stu where id=1001;// 查找符号条件的记录

3)查询记录select * from stu where name= 'zhangsan';

// 字符串需要加引号(单双皆可,功能相同)

select * from stu where name = 'zhangsan' or score=92;

4)删除记录delete from stu where id=1004;

5)更新记录update stu set score=98 where id=1003;

6)删除一张表drop table stu;

7)添加一列 alter table stu add column score int;

sqlite3 不允许直接删除一列

①先创建一张新表

create table stu1 as select id , name from stu;

8)删除一列 ②删除原来的旧表

drop table stu;

③对新表重命名

alter table stu1 rename to stu;

9)数据库主键 (既设置的数据将会是唯一存在的)

create table usr(name text primary key , passwd text);

【3】sqlite3 API 函数接口

gcc 编译时应该连接 sqlite3 库(静态库)

gcc *.c -o *** -lsqlite3

所需头文件 #include

int sqlite3_open(

函数原型 const char *filename,/* Database filename (UTF-8) */

sqlite3 **ppDb/* OUT: SQLite db handle */

);

功能 创建或者打开一个数据库

filename 数据库名字

参数

ppdb 操作数据库的指针,句柄。

成功 SQLITE_OK

返回值

失败 error_code

例 sqlite3 *db;

if(sqlite3_open("stu.db", &db) != SQLITE_OK)

{

printf("%s\n", sqlite3_errmsg(db));

}

所需头文件 #include

int sqlite3_exec(

sqlite3* db,/* An open database */

const char *sql,/* SQL to be evaluated */

int (*callback)(void*,int,char**,char**), /* Callback function */

函数原型 void * arg,/* 1st argument to

callback */

char **errmsg/* Error msg written here

*/

);

功能执行一条sql语句

参数db 数据库的句柄指针

sql 将要被执行sql语句

callback 回调函数, 只有在查询语句时,才给回调函数传参

int (*callback)(void* arg ,int ncolumn ,char** f_value,char**

f_name)

功能:得到查询结果

参数:arg 为回调函数传递参数使用的

ncolumn 记录中包含的字段的数目

f_value包含每个字段值的指针数组

f_name包含每个字段名称的指针数组

返回值:成功 0,出错非0

arg 为callback 传参的

errmsg 错误信息的地址

成功 SQLITE_OK

返回值

失败 error_code

char *errmsg;

if(sqlite3_exec(db, "create table stu(id int, name char, score int)",

例子NULL, NULL, &errmsg) != SQLITE_OK)

{

printf("%s\n", errmsg);

}

所需头文件 #include

int sqlite3_get_table(

sqlite3 *db,/* An open database */

const char *zSql,/* SQL to be evaluated */

函数原型char ***pazResult, /* Results of the query */

int *pnRow,/* Number of result rows written here */

int *pnColumn,/* Number of result columns written here */

char **pzErrmsg/* Error msg written here */

);

功能查询数据库,它会创建一个新的内存区域来存放查询的结果信息

db 数据库操作句柄

sql 数据库的sql语句

azResult 查询的结果

行数,nrow的值为查询到的符合条件的记录数(不包括字段名)。

参数 注意:nrow的值不包括字段名,如果打印时用for (i = 0; i < nrow;

nRowi++)会打印出字段名,但是会少打印出一条符合条件的记录。因此打

印时要用 for (i = 0; i

印出来。

nColumn列数,ncolumn的值为查询到的符合条件的字段数。

errmsg错误消息

成功SQLITE_OK

返回值

失败error_code

const char *sqlite3_errmsg(sqlite3* db);功能:获取错误信息描述

int sqlite3_close(sqlite3* db);功能:关闭一个数据库

void sqlite3_free_table(char **result);功能:释放内存

推荐书籍:

UNIX高级环境编程

UNIX网络编程 卷一 卷二

TCP/IP详解 卷一 卷二 卷三

UNIX/LINUX系统编程手册 上册 下册

上一篇:同步与异步的区别详解

下一篇:Linux下网络编程实现UDP,还有大量实例

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部