标签:
1、Sqlite数据类型: NULL. 空值、INTEGER. 整型、REAL.浮点型、TEXT.文本类型、BLOB. 二进制类型,用来存储文件,比如图片。
2、使用sqlite3 首先要导入libsqlite3.dylib,并导入头文件Sqlite3.h。定义 sqlite3 *_db;
3、设置数据文件存放路径,如沙盒的Doucuments文件夹内。
NSString *_dbpath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/mySql.sqlite"];
NSLog(@"%@",_dbpath);
4、打开数据表 sqlite3_open方法
打开数据库文件,第一个参数代表数据库文件的路径,注意需要调用UTF8String方法将NSString转换成C的字符串格式,第二个参数代表数据库对象,该方法如果返回0(SQLITE_OK),代表数据库代开成功,如果该路径没有数据库文件,则先创建再打开,否则直接打开
int r = sqlite3_open([_dbpath UTF8String], &_db);
5、创建数据表 create table if not exists(如果表不存在) Student(表名,自己定义) (该括好放要保存的信息:字段名 字段格式,多个字段之间用逗号隔开)
NSString *path = @"create table if not exists Student(name TEXT,age INTEGER)";//如果数据库中没有Student表,则创建该表,包含 字符串形式的name和整型的age
6、执行数据库语句
//执行数据库语句: 第一个参数代表执行的数据库对象,也就是打开的数据库,第二个参数代表执行语句,后面三个直接给NULL即可
sqlite3_exec(_db, [path UTF8String], NULL, NULL, NULL);
7、增加(插入)
//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);
8、删除
//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);
9、更新(改)
//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);
10、查询语句
//查询所有: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);
}
}
11、条件查询
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);
}
}
12、关闭数据库
sqlite3_close(_db);// 关闭数据库
标签:
原文地址:http://www.cnblogs.com/wxzboke/p/5007701.html