目录
[sqlite 命令 + 语句](#sqlite 命令 + 语句)
[Sqlite3 软件命令:学习如何操作数据库 -- sql语句(structure query language)](#Sqlite3 软件命令:学习如何操作数据库 -- sql语句(structure query language))
[sqlite C语言编程](#sqlite C语言编程)
[sqlite_open --> int sqlite_open(char *db_name,sqlite**db)](#sqlite_open --> int sqlite_open(char *db_name,sqlite**db))
[sqlite3_exec --> int sqlite3_exec(sqlite3 *db,const char *sql,exechandler_t callback,void*arg,char **errmsg)](#sqlite3_exec --> int sqlite3_exec(sqlite3 *db,const char sql,exechandler_t callback,voidarg,char **errmsg))
[回调函数指针 --> typedef int callback(void*para,int n,char ** pvalue,char **pname)](#回调函数指针 --> typedef int callback(void*para,int n,char ** pvalue,char **pname))
[sqlite3_get_table --> int sqlite3_get_table(sqlite3 *db,const char *sql,char ***resulttp,int *nrow,int *ncolumn,char **errmsg)](#sqlite3_get_table --> int sqlite3_get_table(sqlite3 *db,const char *sql,char ***resulttp,int *nrow,int *ncolumn,char **errmsg))
[sqlite3_free_table --> void sqlite3_free_table(char**resultp);](#sqlite3_free_table --> void sqlite3_free_table(char**resultp);)
sqlite 命令 + 语句
基本用法:
- "帮助"输入: .help
- "退出"输入: .quit
- 每条语句最后必须添加分号
Sqlite3 软件命令:学习如何操作数据库 -- sql语句(structure query language)
sqlite3命令:
- 查看表 .tables
- 查看表的结构 .schema
- 打开表头 .headers on
- 以固定的列宽呈现 .mode column
创建一个数据库:
命令:sqlite3 数据文件名.db 进入
eg: sqlite3 stu.db (database 数据库以 .db作为结尾)
.databases //查看当前数据库关联的文件名
数据库操作:sql语句
创建一张表:
create table 表名称(列名称1 数据类型,列名称2 数据类型,......);
eg: creat table stu(name text,age int,score float);
删除一张表:
drop table 表名;
eg: drop table stu;
插入数据:
给一行中的所有列赋值****insert into 表名 values (列值1,列值2,列值3,.....);
eg: insert into stu values("zhangsan",18,99.5);
给表中插入新的一列 alter table 表名 add 列名 int;
eg: alter table stu add sno int;
给指定的列给值,但是其实是在一条新纪录里面给了值,会发现其余位都是空白的
eg: insert into stu (sno) values (110);
查询语句:
用于从表中选取数据,结果被存储在一个结果表中(称为结果集)
1 select *from 表名 [匹配条件]; 星号(*)是选取所有列的通配符
eg: select *from stu; 查看表中所有内容
2 select 列名1 [,列名2,......] from 表名 where(匹配条件);
eg: select name from stu where score < 90;
eg: select name from stu where age in (19,30,..);
eg: select name from stu where age > 18or score > 90; (其中 or 也可以换成and)
eg: select name from stu where age like 18; (age like 18 等价于 age = 18)
eg: select name from stu where name like 'zhang**%**'; (以"zhang"开头的字符符合条件)
eg: select name from stu where name like '% ang**%**'; (含"ang"的字符符合条件)
eg: select name from stu where name like '**%**an'; (以"an"结尾的字符符合条件)
3 select *from 表名 order by 列名; 升序
eg: select name from stu order by score;
eg: select name from stu order by score desc; desc 降序
修改数据:
修改表中某一个参数 update 表名 set 要修改的列名 = 目的值 [匹配条件];
eg: update stu set score = 90.5 where name == 'zhangsan';
删除数据:
删除某一行的数据 delete from 表名 [匹配条件];
eg: delete from stu where name == 'zhangsan';
sqlite C语言编程
sqlite_open --> int sqlite_open(char *db_name,sqlite**db)
功能:打开数据库
参数:
- @db_name:字符串类型,数据库文件的路径
- @db:二级指针 sqlite3**,用于接收打开后的数据库句柄
返回值:成功,返回0 失败,返回非0
sqlite3_exec --> int sqlite3_exec(sqlite3 *db,const char *sql,exechandler_t callback,void*arg,char **errmsg)
功能:执行sql指向的SQL语句,若结果集不为空,函数就会调用函数指针callback所指向的函数
参数:
- @db:数据库的标识
- @sql:SQL语句(一条或多条),以;结尾
- @callback:是回调函数,当select这条语句执行后,sqlite3会去调用你提供的函数
- @arg:当执行sqlite3_exec的时候传递给回调函数的参数
- @errmasg:记录sqlite3_exec的错误信息
返回值:成功 SQLITE_OK 失败 非SQLITE_OK
回调函数指针 --> typedef int callback(void*para,int n,char ** pvalue,char **pname)
功能:此函数由用户定义,当sqlite3_exec 函数执行时sql语句后,结果集不为空时,sqlite3_exec函数会自动调用此函数,每次调用此函数时会把结果集的一行信息传给此函数
参数:
- @pare:sqlite3_exec传给此函数的参数,para为任意数据类型的地址
- @n:结果集的列数
- @pvalue:指针数组的地址,其存放一行信息中各个列值的首地址
- @pname:指针数组的地址,其存放一行信息中各个列值对应列名的首地址
返回值:若为非0值,则通知sqlite3_exec终止回调
sqlite3_get_table --> int sqlite3_get_table(sqlite3 *db,const char *sql,char ***resulttp,int *nrow,int *ncolumn,char **errmsg)
功能:执行sql指向SQL语句,函数将结果集相关的数据的地址保存在函数的参数中
参数:
- @db:数据库的标识
- @sql:SQL语句(一条或多条),以;结尾
- @resultp:指针数组的地址,其记录了结果集的数据
- @r:结果集的行数(不包括列名)
- @c:结果集的列数
- @errmsg:错误信息

sqlite3_free_table --> void sqlite3_free_table(char**resultp);
功能:释放sqlite3_get_table分配的内存
参数:结果集的数据的首地址