• SQLite的应用


    1》打开数据库并创表:

     // 获得数据库文件的路径
        NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
        NSString *filename = [doc stringByAppendingPathComponent:@"students.sqlite"];
        // 将OC字符串 转成 C语言字符串
        const char *cfilename = filename.UTF8String;
        // 1.打开数据库(如果数据库文件不存在,sqlite3_open函数会自动创建数据库文件)
        int result = sqlite3_open(cfilename, &_db);
        if (result == SQLITE_OK) { // 打开成功
            NSLog(@"成功打开数据库");
            
            // 2.创表
            const char *sql = "CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY AUTOINCREMENT, name text NOT NULL, age integer NOT NULL);";
            char *erroMsg = NULL;
            result = sqlite3_exec(self.db, sql, NULL, NULL, &erroMsg);
            if (result == SQLITE_OK) {
                NSLog(@"成功创表");
            } else {
    //            printf("创表失败--%s--%s-%d", erroMsg, __FILE__, __LINE__);
                NSLog(@"创表失败--%s--%@-%d", erroMsg, [NSString stringWithUTF8String:__FILE__], __LINE__);
            }
        } else {
            NSLog(@"打开数据库失败");
        }

    2》操作数据库

    <1>插入数据:

    for (int i = 0; i<20; i++) {
            // 1.拼接SQL语句
            NSString *name = [NSString stringWithFormat:@"Jack-%d", arc4random_uniform(100)];
            int age = arc4random_uniform(20) + 30;
            NSString *sql = [NSString stringWithFormat:@"INSERT INTO t_student (name, age) VALUES ('%@', %d);", name, age];
            
            // 2.执行SQL语句
            char *erroMsg = NULL;
            sqlite3_exec(self.db, sql.UTF8String, NULL, NULL, &erroMsg);
            if (erroMsg) {
                NSLog(@"插入数据失败--%s", erroMsg);
            } else {
                NSLog(@"成功插入数据");
            }
        }

    <2>查询数据

     const char *sql = "SELECT id, name, age FROM t_student WHERE age <= 30;";
        // 进行查询前的准备工作
        // -1 代表系统会自动计算SQL语句的长度
        // sqlite3_stmt:用来取数据
        sqlite3_stmt *stmt = NULL;
        if (sqlite3_prepare_v2(self.db, sql, -1, &stmt, NULL) == SQLITE_OK) { // SQL语句没有问题
            NSLog(@"查询语句没有问题");
            
            // 每调一次sqlite3_step函数,stmt就会指向下一条记录
            while (sqlite3_step(stmt) == SQLITE_ROW) { // 找到一条记录
                // 取出数据
                
                // 取出第0列字段的值(int类型的值)
                int ID = sqlite3_column_int(stmt, 0);
                
                // 取出第1列字段的值(tex类型的值)
                const unsigned char *name = sqlite3_column_text(stmt, 1);
                
                // 取出第2列字段的值(int类型的值)
                int age = sqlite3_column_int(stmt, 2);
                
                NSLog(@"%d %s %d", ID, name, age);
            }
        } else {
            NSLog(@"查询语句有问题");
        }
  • 相关阅读:
    使用VGG16完成猫狗分类
    11.绘制网络结构
    11.模型载入
    session与cookie的区别---
    zookeeper 笔记
    53. Maximum Subarray
    !!!!!122. Best Time to Buy and Sell Stock II
    121. Best Time to Buy and Sell Stock
    235. Lowest Common Ancestor of a Binary Search Tree
    128. Longest Consecutive Sequence
  • 原文地址:https://www.cnblogs.com/Fc-ios/p/3896131.html
Copyright © 2020-2023  润新知