码迷,mamicode.com
首页 > 移动开发 > 详细

IOS SQLite3的使用

时间:2015-04-22 00:42:48      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:ios   objective-c   sqlite3   

一、什么是SQLIte
     SQLite是一款轻型的嵌入式数据库,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就足够了。它的处理速度比Mysql、PostgreSQL这两款著名的数据库都还快
二、数据库存储数据的步骤
1、新建一个数据库
2、新建一张表(table)
3、添加多个字段(column,列,属性)
4、添加多行记录(row,每行存放多个字段对应的值
三、SQL语句种类
1、数据定义语句(DDL:Data Definition Language)
包括create和drop等操作
在数据库中创建新表或删除表(create table或 drop table)

2、数据操作语句(DML:Data Manipulation Language)
包括insert、update、delete等操作
上面的3种操作分别用于添加、修改、删除表中的数据

3、数据查询语句(DQL:Data Query Language)
可以用于查询获得表中的数据
关键字select是DQL(也是所有SQL)用得最多的操作
其他DQL常用的关键字有where,order by,group by和having

三、SQLite的字段类型
integer : 整型值
real : 浮点值
text : 文本字符串
blob : 二进制数据(比如文件)
实际上SQLite是无类型的,但为了保持良好的编程规范,方便程序员之间的交流,编写建表语句的时候最好还是加上每个字段的具体类型

四、SQLite的使用
1、在IOS中使用SQLite3时,首先需要添加库文件libsqlite3.dylib和导入主头文件
#import <sqlite3.h>

技术分享
创建数据库
// 拼接数据库地址
    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
    NSString *sqlFile = [path stringByAppendingPathComponent:@"student.sqlite"];
    // 打开数据
    int result = sqlite3_open(sqlFile.UTF8String, &_db);
打开数据库会返回一个int类型的返回值,通过该值可以判断创建数据库是否成功
     // 判断是否打开成功
    if (result == SQLITE_OK) {
        NSLog(@"打开成功");
        // 创建表
        /*
         第一个参数: 需要执行SQL语句的数据库对象
         第二个参数: 需要执行的SQL语句
         第三个参数: 回调函数
         第四个参数: 第三个参数的参数
         第五个参数: 接收错误信息
         */
                    // 创建表的sql语句
        NSString *sql = @"CREATE TABLE IF NOT EXISTS t_student(id INTEGER PRIMARY KEY AUTOINCREMENT , name TEXT, age INTEGER, score REAL);";
        result = sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL);
        if (result == SQLITE_OK) {
            NSLog(@"创建表成功");
        }else
        {
            NSLog(@"创建表失败");
        }
    }else
    {
        NSLog(@"打开失败");
    }


以上的代码执行完,就会在app的沙盒中创建一个数据库
技术分享

该数据库可以用一个叫NaviCat Premium的软件打开,如下
技术分享

表字段都已经创建好了,现在就可以愉快的进行数据库操作了
2、插入数据
NSString *sql = @"INSERT INTO t_student(age, score, name) VALUES ('28', 100, 'jonathan');";
    int result =  sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL);
    if (result == SQLITE_OK) {
        NSLog(@"插入成功");
    }


3、修改数据
NSString *sql = @"UPDATE t_student SET name = 'LNJ';";
    int result =  sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL);
    if (result == SQLITE_OK) {
        NSLog(@"修改成功");
    }


4、删除数据
NSString *sql = @"DELETE FROM t_student WHERE id = 1; ";
    int result =  sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL);
    if (result == SQLITE_OK) {
        NSLog(@"删除成功");
    }



5、查询数据
sqlite3操作中, 所有DML语句都是使用sqlite3_exec函数执行SQL语句即可,但是如果是需要查询数据库, 不能使用sqlite3_exec, 因为它并没有返回查询到得结果发给我们
NSString *sql = @"SELECT * FROM t_student;";
    sqlite3_stmt *stemt = NULL;
    /*
     第一个参数:需要执行SQL语句的数据库
     第二个参数:需要执行的SQL语句
     第三个参数: 告诉系统SQL语句的长度, 如果传入一个小于0的数, 系统会自动计算
     第四个参数:结果集, 里面存放所有查询到的数据(不严谨)
     */
    sqlite3_prepare_v2(_db, sql.UTF8String, -1, &stemt, NULL);
    // 判断有没有查询结果
    while (sqlite3_step(stemt) == SQLITE_ROW) {
        // 取出第一个字段的查询得结果
        const unsigned char *name = sqlite3_column_text(stemt, 1);
        // 取出第一个字段的查询得结果
        int age = sqlite3_column_int(stemt, 2);
        // 取出第一个字段的查询得结果
        double score = sqlite3_column_double(stemt, 3);
        NSLog(@"%s %d %f", name, age, score);
    }


IOS SQLite3的使用

标签:ios   objective-c   sqlite3   

原文地址:http://blog.csdn.net/u011058732/article/details/45177681

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