码迷,mamicode.com
首页 > 数据库 > 详细

Sqlite

时间:2015-11-30 17:44:22      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

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);// 关闭数据库

 

Sqlite

标签:

原文地址:http://www.cnblogs.com/wxzboke/p/5007701.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!