数据库(sqlite3)课堂笔记

基本操作

注意编译时需要加上的头文件及指令

头文件:#include <stdlib.h>

编译指令·: gcc 文件名.c -lsqlite3

插入数据:

在数据表中插入所有数据(参数需齐全)

insert into +数据表名 values(相应数据)

在数据表中插入数据(部分插入 部分参数就行)

insert into +数据表名((参数名一,。。。。。, 参数名N)values(参数值一, 。。。。,参数值N))

查看数据:

查看数据表中的内容(全部)

select * from +数据表名

查询数据表中的内容 (部分)

select name, sroce from +数据表名

查询数据表特定内容 

select * from +数据表名 where 参数=?;(一个限定条件)

select * from +数据表名 where 参数1=? and 参数2=?;(两个限定条件必须同时满足)

select * from +数据表名 where 参数1=? or 参数2=?;(两个限定条件满足一个就行)

删除数据:

delete from +数据表名 ;(删除整个数据表)

delete from +数据表名 where 参数=?;(删除特定行)

更新数据:

update +数据表名 set 参数1=?where 参数2=?;

update +数据表名 set 参数1=?, 参数2=?where 参数3=? ;

删除表:

drop table 数据表名

给数据表重命名

alter table +原的数据表名 rename to 要改成的数据表名

sqlite不支持删除一列信息

所以只能间接删除 步骤如下:

1.创建一张新表

2.删除原有的表

3.将新表的名字改成原来的表的名字

这样旧表的内容会自动写入到新表中
 

API

打开数据库
int sqlite3_open(const char *filename, sqlite3 **ppDb);
第一个参数指文件名
第二个参数则是定义的 sqlite3 ** 结构体指针(关键数据结构),称为数据库句柄。
返回值:表示操所是否正确 (SQLITE_OK 操作正常)
说明:打开一个数据库,文件名不一定要存在,如果此文件不存在,sqlite会自动创建。


关闭数据库
int sqlite3_close(sqlite3*);
参数就是刚才的结构体,也就是数据库句柄。
说明:如果用sqlite3_open开启了一个数据库,结尾时不要忘了用这个函数关闭数据库。

执行SQL语句
int sqlite3_exec(sqlite3*,const char *sql,sqlite_callback,void *,char **errmsg);

 


这个函数的功能是执行一条或者多条SQL语句,SQL语句之间用“;”号隔开,在执行select语句的时候,需指定第三个参数回调函数,在回调函数中可以获得执行Sql得详细过程,如果所有Sql执行完毕则应该返回0,否则,则说明这次执行并没有完全成功。

第五个参数当如果执行失败(没有返回0)则可以查看第五个阐述得值。来查看详细错误信息,通常sqlite3_callback和它后面的void*这两个位置都可以填NULL,表示不需要回调。比如做insert操作,做delete操作,就没有必要使用回调。而当作select时,就要使用回调,因为sqlite3把数据查出来,得通过回调告诉你查出了什么数据。


exec的回调函数原型
typedef int (*sqlite3_callback)(void*, int, char**, char**);


例如:int LoadMyInfo( void * para, int n_column, char ** column_value, char ** column_name )
para是在 sqlite3_exec 里传入的 void * 参数,通过para参数,可以传入带有控制功能的数据
n_column是这一条记录有多少个字段 (即这条记录有多少列),char ** column_value 是个关键值,查出来的数据都保存在这里,它实际上是个1维数组,每一个元素都是一个 char * 值,是一个字段内容(用字符串来表示,以\0结尾),char ** column_name跟column_value是对应的,表示这个字段的字段名称
说明:回调函数必须定义为上面这个函数的类型。
 

全缓冲查询
int sqlite3_get_table(sqlite3*,const char *sql,char ***result,int *nrow,int *ncolumn,char **errmsg);

 


执行一次查询Sql 并且返回得到一个记录集。
说明:第三个参数是查询结果,它是一维数组,内存布局为:第一行是字段名称,后面是紧接着是每个字段的值。

释放查询结果:
void sqlite3_free_table(char **result);
释放当前查询的记录集所占用的内存。


 

字节缓冲

int sqlite3_prepare( sqlite3 *db,  const char *Sql,  int nByte,  sqlite3_stmt **ppStmt,  const char **pzTail );

参数:

db:数据指针,  Sql:sql语句,   nByte:如果nByte小于0,则函数取出Sql中从开始到第一个0终止符的内容;如果nByte不是负的,那么它就是这个函数能从zSql中读取的字节数的最大值。pzTail:上面提到zSql在遇见终止符或者是达到设定的nByte之后结束,假如zSql还有剩余的内容,那么这些剩余的内容被存放到pZTail中,不包括终止符。如果 pszTail 不为 NULL, 则 *pszTail 指向 sql 中第一个被传入的 SQL 语句的结尾. 该函数只编译 sql 的第一个语句, 所以 *pszTail 指向的内容则是未被编译的,  ppStmt:能够使用sqlite3_step()执行的编译好的准备语句的指针,如果错误发生,它被置为NULL,如假如输入的文本不包括sql语句。调用过程必须负责在编译好的sql语句完成使用后使用sqlite3_finalize()删除它。

说明,如果执行成功,则返回SQLITE_OK,否则返回一个错误码。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值