这个东西不是属于ios的,但是是在学习ios的时候学习到的,所以也放在这里了。
1,今天看了sqlite数据库的东西,以前没有接触过这个数据库,这是一个嵌入式数据库,不需要配置。每一个statement都和一个connection关联,一个connection可以包含多个statement,而且每个连接有一个与数据库关联的B-tree和一个Paper。对数据库的任何操作,一个连接存在于一个事务下,一个连接决不会同时存在多个事务下。
2,sqlite支持事务,触发器,不支持存储过程,对于多条数据的插入没有专门的语句,只能在程序中使用循环插入。
3,触发器支持insert,update,delete,例子:
Drop Trigger If Exists MAIN.[tggr_xtmp];
Create Trigger MAIN.[tggr_xtmp] AFTER INSERT On [data_info] FOR EACH ROW
begin
insert into data_info values(‘aaaaaaaaaaa');
end;
这样,只要插入一条数据,就会再插入一条aaaaaaaaaaa
4,使用sqlite3的基本步骤:
1)建立连接:
int result = sqlite3_open([realPath UTF8String],&dbPointer);//打开可写路径文件
2)生成一个可执行的对象:
sqlite3_stmt *stmt;
3)需要执行的语句:
int result = sqlite3_prepare_v2(db,"SELECT * FROM data_info",-1,&stmt,NULL);
4)关闭stmt:
sqlite3_finalize(stmt);
5)关闭连接:
int result = sqlite3_close(dbPointer);
5,一些常用API: INT sqlite3_prepare(sqlite3*,const CHAR*,INT,sqlite3_stmt**,const CHAR**); INT sqlite3_bind_double(sqlite3_stmt*,DOUBLE); INT sqlite3_bind_int(sqlite3_stmt*,INT); INT sqlite3_bind_int64(sqlite3_stmt*,long long INT); INT sqlite3_bind_null(sqlite3_stmt*,INT); INT sqlite3_bind_text(sqlite3_stmt*,INT n,void(*)(void*)); INT sqlite3_bind_text16(sqlite3_stmt*,const void*,void(*)(void*)); INT sqlite3_step(sqlite3_stmt*);