一、Sqlite数据类型: NULL. 空值、INTEGER. 整型、REAL.浮点型、TEXT.文本类型、BLOB. 二进制类型,用来存储文件,好比图片。sql
二、使用sqlite3 首先要导入libsqlite3.dylib,并导入头文件Sqlite3.h。定义 sqlite3 *_db;数据库
三、设置数据文件存放路径,如沙盒的Doucuments文件夹内。sqlite
NSString *_dbpath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/mySql.sqlite"];对象
NSLog(@"%@",_dbpath);图片
四、打开数据表 sqlite3_open方法字符串
打开数据库文件,第一个参数表明数据库文件的路径,注意须要调用UTF8String方法将NSString转换成C的字符串格式,第二个参数表明数据库对象,该方法若是返回0(SQLITE_OK),表明数据库代开成功,若是该路径没有数据库文件,则先建立再打开,不然直接打开string
int r = sqlite3_open([_dbpath UTF8String], &_db);it
五、建立数据表 create table if not exists(若是表不存在) Student(表名,本身定义) (该括好放要保存的信息:字段名 字段格式,多个字段之间用逗号隔开)table
NSString *path = @"create table if not exists Student(name TEXT,age INTEGER)";//若是数据库中没有Student表,则建立该表,包含 字符串形式的name和整型的agedate
六、执行数据库语句
//执行数据库语句: 第一个参数表明执行的数据库对象,也就是打开的数据库,第二个参数表明执行语句,后面三个直接给NULL便可
sqlite3_exec(_db, [path UTF8String], NULL, NULL, NULL);
七、增长(插入)
//sql插入语句:insert into Student(表名) (要进行保存的字段名,名字之间用逗号隔开) values(要保存的实际数据,多个数据用逗号隔开,注意:此处数据要与前面的字段名保持一致,且若是是TEXT类型,须要用单引号引发来)
NSString *s = @"insert into Student(name,age) values('小明',19)";
sqlite3_exec(_db, [s UTF8String], NULL, NULL, NULL);
NSString *s1 = @"insert into Student(name,age) values('小红',21)";
sqlite3_exec(_db, [s1 UTF8String], NULL, NULL, NULL);
八、删除
//sql删除语句: delete(关键字) from Student(表名) where(条件关键字) name(字段名) = ‘小明’(要删除数据的条件,若是是TEXT,用单引号引发来)
NSString *desqlite = @"delete from Student where name = '小明'";
sqlite3_exec(_db, [desqlite UTF8String], NULL, NULL, NULL);
//删除所有
NSString *alldel = @"delete from Student";
sqlite3_exec(_db, [alldel UTF8String], NULL, NULL, NULL);
九、更新(改)
//sql更新语句:update(关键字) Student(表名) set(关键字,赋值) age(字段名) = 25(要更改的值,若是要更新多个字段,则用逗号隔开) where(条件关键字) rowid(字段名) = 5(条件得看表中具体是那一行)
NSString *upsql = @"update Studnet set age = 19,name = '小李' where rowid = 5";
sqlite3_exec(_db, [upsql UTF8String], NULL, NULL, NULL);
十、查询语句
//查询全部:select(关键字) * from Student(表名)
NSString *querysql = @"select *from Studnet";
sqlite3_stmt *_stmt = nil;//用于存放查询结果
int res = sqlite3_prepare(_db, [querysql UTF8String], -1, &_stmt, NULL);//检查sql语句的合法性,若是合法则直接运行,返回结果为0
if (res == 0) {
//遍历结果集_stmt,若是sqlite3_step返回100,表明有查询结果,先取出第一条,而后再指向下一条,直到sqlite3_step返回101,表明遍历结束
while (SQLITE_ROW == sqlite3_step(_stmt)) {
//取出单行结果中的某一列,从0开始
const unsigned char *s = sqlite3_column_text(_stmt, 0);
//将查询结果转换成oc字符串
NSString *name = [NSString stringWithUTF8String:(const char *)s];
NSLog(@"%@",name);
}
}
十一、条件查询
NSString *querysql1 = @"select *from Student where age<20";
sqlite3_stmt *_stmt1 = nil;//用于存放查询结果
int res1 = sqlite3_prepare(_db, [querysql1 UTF8String], -1, &_stmt1, NULL);//检查sql语句的合法性,若是合法则直接运行,返回结果为0
if (res1 == 0) {
//遍历结果集_stmt,若是sqlite3_step返回100,表明有查询结果,先取出第一条,而后再指向下一条,直到sqlite3_step返回101,表明遍历结束
while (SQLITE_ROW == sqlite3_step(_stmt1)) {
//取出单行结果中的某一列,从0开始
const unsigned char *s1 = sqlite3_column_text(_stmt1, 0);
//将查询结果转换成oc字符串
NSString *name1 = [NSString stringWithUTF8String:(const char*)s1];
NSLog(@"%@",name1);
}
}
十二、关闭数据库
sqlite3_close(_db);// 关闭数据库