SQLite常用命令
- sqlite3 file.db 创建名为file的库文件并进入到SQL命令行模式,提示符变为sqlite>
- .help 可显示shell模式中可使用的所有命令列表以及命令的含义
- .database 显示数据库信息;包含当前数据库的位置
- create table student( Sno integer primary key, Sname text not null, Ssex text default ‘M’,Sage integer default 19,Sdept text default ‘CS’); 创建一个包含Sno,Sname,Ssex,Sage,Sdept五个标题的一个表格,里面包含每一个标题的约束条件
create table student :创建一个表,名为student
Sno integer primary key:标题为Sno,类型为integer整型,约束条件为primary key主键即Sno在表中唯一,且数值自动增长
Sname text not null :标题为Sname,类型为text字符串,约束条件为not null就是不可省略,必须填写
Ssex text default ‘男’:类型为Ssex,类型为text字符串,约束条件为default,默认为男,省略不写的话默认为M
Sage integer default 19 :标题为Sage,类型为integer整型,约束条件为default默认为19,就是说如果省略不写的话就以19填充
Sdept text default ‘CS’ :标题为Sdept,类型为text字符串,约束条件为default默认为CS,就是说如果省略不写的话就以CS填充
- .tables 列出当前数据库中存在的表
- insert into student values(‘95001’,’李勇’,’M’,20,’CS’);
- insert into student values(‘95002’,’刘晨’,’F’,19,’IS’);
- insert into student values(‘95003’,’王敏’,’F’,18,’MA’);
- insert into student values(‘95004’,’张立’,’M’,18,’IS’); 向student这个表中插入4名学生的信息
- select * from student; 显示表中全部信息(但是显示的只是内容,没有标题)
- .header on/off 给表中的信息加上标题的开/关,但可以发现这样标题和信息并没有对齐
- .mode list 默认的显示方式
- .mode column 表中的内容按照列方式对齐显示
- .mode line 表中的内容以形式行的方式显示
- .mode tabs 以标签的方式显示
- .mode tcl 以双引号的形式显示
- .mode csv 以逗号隔开显示
- .mode insert 将插入的内容显示出来
- .exit /.quit 退出数据库模式
- select *from student where Sname='李勇'; 按照人名单一查找
- select *from student where Sname='李勇' and Sage=20; 按照两个条件一起判断
- select Sage from student where Sname='李勇'; 按照姓名的条件查看姓名对应的信息中的年龄信息
- insert into student(Sname,Sage) values ('pengd',19);
- insert into student(Sname,Sage) values ('彭丹',19); 按照缺省的模式插入部分内容,Sno自动增加,其中Sname是必须输入的其他的都有默认值
- delete from student where Sname='pengd'; 指定条件删除指定的信息
- create table student_1(Sno integer primary key,Sname text not null, Ssex text default 'M',Sage integer default 19,Sdept text default 'CS'); 创建一个新表,然后可以通过.tables查看多出来的表
- drop table student_1; 删除名为student_1的表
- .schema student 查看表的结构,也就是表中包含信息的结构
- update student set Ssex='f',Sage=21 where Sname='李勇'; 更新名为李勇这个人的其他相关信息
- alter table student add column Spwd text default '123456'; 插入一个字段名为Spwd,默认类型是text,默认值是123456
- alter table student rename to stu; 将表重命名为stu
3.SQLite数据库编程接口函数
头文件:#include<stdio.h>
#include<stdlib.h>
#include<sqlite3.h>
打开sqlite数据库:int sqlite3_open(char *path,sqlite3 **db);
关闭sqlite数据库:int sqlite3_close(sqlite3 *db);
传递错误信息:const char *sqlite3_errmsg(sqlite3 *db);
参数:char *path:数据库文件的路径
sqlite3 **db:指向sqlite句柄的指针
返回值:成功为0,失败返回错误码
int sqlite3_exec(sqlite3 *db,const char *sql,sqlite_callback callback,void *para,char **errmsg);
功能:执行SQL操作
参数:sqlite3 *db:指向sqlite句柄的指针
const char *sql:SQL语句
sqlite3_callback callback:回调函数
void *para:传递给回调函数的参数
char **errmsg:错误信息指针的地址
返回值:成功返回0,错误返回错误码
typedef int(*sqlite_callback)(void *para,int f_num,char **f_value,char **f_name);
功能:每找到一条记录自动执行一次回调函数
参数:para:传递给回调函数的参数
f_num:记录中包含的字段数目
f_value:包含每个字段值的指针数组
f_name:包含每个字段名称的指针数组
返回值:成功返回0,失败返回-1
int sqlite3_get_table(sqlite3 *db,const char *sql,char ***resultp,int *nrow,int *ncolumn,char **errmsg);
功能:执行SQL操作
参数:db:数据库句柄
sql:SQl语句
resultp:用来指向sql执行结果的指针
nrow:满足条件的记录的数目
ncolumn:每条记录中包含的字段数目
errmsg:错误信息指针的地址
返回值:成功返回0,失败返回错误码