IOS_sqlite简单操作

[super viewDidLoad];
    // 创建数据库
    // 先获取document路径
    ///Users/pj/Library/Application Support/iPhone Simulator/7.1/Applications/422EC333-2CE1-45E8-8142-24CBF6823A3D/Documents
    NSString *docDir = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
    // /Users/pj/Library/Application Support/iPhone Simulator/7.1/Applications/422EC333-2CE1-45E8-8142-24CBF6823A3D/Documents/mydb.db
    NSString *dbName = [docDir stringByAppendingPathComponent:@"mydb.db"];
    sqlite3 *_db;
    if (SQLITE_OK == sqlite3_open(dbName.UTF8String, &_db)) {
        NSLog(@"打开或者创建数据库成功");
    }else
    {
        NSLog(@"创建或者打开数据失败");
    }
    
    NSLog(@"%@",dbName);
    
    // 创建数据库表
    NSString *sql = @"CREATE TABLE IF NOT EXISTS t_person (id integer PRIMARY KEY AUTOINCREMENT,name text,age integer,phoneNo text)";
    char *errmsg;
    if (SQLITE_OK == sqlite3_exec(_db, sql.UTF8String, NULL, NULL, &errmsg)) {
        NSLog(@"成功");
    }else
    {
        NSLog(@"失败%s",errmsg);
    }
    
    // 添加记录
    
    sql = @"INSERT INTO t_person (name, age, phoneNo) VALUES ('张三', 99, '139283833')";
    if (SQLITE_OK == sqlite3_exec(_db, sql.UTF8String, NULL, NULL, &errmsg)) {
        NSLog(@"插入成功");
    }else
    {
        NSLog(@"插入失败%s",errmsg);
    }
    
    // 查询结果
    // 1. 评估准备SQL语法是否正确
    sql = @"SELECT id, name, age, phoneNo FROM t_person";
    sqlite3_stmt *stmt = NULL;
    NSMutableArray *persons = nil;
    if (SQLITE_OK == sqlite3_prepare_v2(_db, sql.UTF8String, -1, &stmt, NULL)) {
        // 2. 如果能够正常查询,调用单步执行方法,依次取得查询结果
        // 如果得到一行记录
        persons = [NSMutableArray array];
        while (SQLITE_ROW == sqlite3_step(stmt)) {
            // 3. 获取/显示查询结果
            // sqlite3_column_xxx方法的第二个参数与sql语句中的字段顺寻一一对应(从0开始)
            const unsigned char *name = sqlite3_column_text(stmt, 1);
            int age = sqlite3_column_int(stmt, 2);
            const unsigned char *phoneNo = sqlite3_column_text(stmt, 3);
            NSString *phoneNoUTF8 = [NSString stringWithUTF8String:(const char *)phoneNo];
            NSLog(@"%@",phoneNoUTF8);
        }
        
    } else {
        NSLog(@"SQL语法错误");
    }
    
    // 4. 释放句柄
    sqlite3_finalize(stmt);

posted @ 2014-08-24 15:40  宝贝,我永远都在  阅读(112)  评论(0)    收藏  举报