数据库

数据库:

需要导入:sqlite3

添加 删除 修改数据库中的数据都用的是:sqlite3_exec

查询数据库用的是:sqlite3_prepare_v2

// 创建一个sqlite3对象 以后都操作它
static sqlite3 *db = nil;

#pragma mark   1. 打开数据库
- (void)openDB {
    if (db == nil) {
        NSString *tempPath = NSTemporaryDirectory();
        NSLog(@"%@", tempPath);
        NSString *filePath = [tempPath stringByAppendingPathComponent:@"student.sqlite"];
        
        // 打开路径下的数据库
        int result = sqlite3_open(filePath.UTF8String, &db);
        if (result == SQLITE_OK) {
            NSLog(@"打开数据库成功");
            // 写sql语句(可用某些工具生成SQL语句)
            NSString *sql = @"CREATE  TABLE  IF NOT EXISTS student (number INTEGER PRIMARY KEY  NOT NULL , name TEXT, age INTEGER)";
            // 执行SQL语句
            int result2 = sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL);
            if (result2 == SQLITE_OK) {
                NSLog(@"创建表格成功");
            }else
                NSLog(@"创建表格失败");
            
        }else
            NSLog(@"打开数据库失败");
    }
}

#pragma mark   2. 关闭数据库
- (void)closeDB {
    if (db != nil) {
        int result = sqlite3_close(db);
        if (result == SQLITE_OK) {
            NSLog(@"关闭数据库成功");
            // 同时把数据库对象置空
            db = nil;
        }else
            NSLog(@"关闭数据库失败");
    }
}


#pragma mark   3. 添加数据
- (void)insertStudent:(Student *)stu {
    // 添加的sql语句
    NSString *sql = [NSString stringWithFormat:@"INSERT INTO student (number, name, age) VALUES ('%@', '%@', '%d')", stu.number, stu.name, stu.age];
    
    
    int result = sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL);
    if (result == SQLITE_OK) {
        NSLog(@"添加数据成功");
    }else
        NSLog(@"添加数据失败");
}
#pragma mark   4. 删除数据
- (void)deleteStudent:(NSString *)num {
    NSString *sql = [NSString stringWithFormat:@"DELETE FROM student WHERE number = '%@'", num];
    int result = sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL);
    if (result == SQLITE_OK) {
         NSLog(@"删除数据成功");
    }else
         NSLog(@"删除数据失败");
}
#pragma mark   5. 更新数据
- (void)updateStudent:(Student *)stu {
    NSString *sql = [NSString stringWithFormat:@"UPDATE student SET name = '%@' , age = '%d' WHERE number = '%@'", stu.name, stu.age, stu.number];
    int result = sqlite3_exec(db, sql.UTF8String, nil, nil, nil);
    if (result == SQLITE_OK) {
        NSLog(@"更新数据成功");
    }else
        NSLog(@"更新数据失败");
    
}

#pragma mark   6. 查询数据
- (NSMutableArray *)selectStudent {
    NSMutableArray *arrayAll = [NSMutableArray array];
    
    
    // 有条件的查询 直接加一个where语句就可以啦
    NSString *sql = [NSString stringWithFormat:@"SELECT * FROM student"];
    
    
    // 游标
    sqlite3_stmt *stmt = nil;
    // int nByte为-1时:自动计算sql语句的长度
    int result = sqlite3_prepare_v2(db, sql.UTF8String, -1, &stmt, NULL);
    if (result == SQLITE_OK) {
        NSLog(@"开始查找数据");
        // 一行一行的去查找数据  直到找完
        while (sqlite3_step(stmt) == SQLITE_ROW) {
            // 获取number
            const char *num1 = (const char *)sqlite3_column_text(stmt, 0);// 第二个参数递增
            NSString *number = [NSString stringWithCString:num1 encoding:NSUTF8StringEncoding];
            // 获取name
            const char *name1 = (const char *)sqlite3_column_text(stmt, 1);
            NSString *name = [NSString stringWithCString:name1 encoding:NSUTF8StringEncoding];
            // 获取age
            int age = sqlite3_column_int(stmt, 2);
            // 把取到的数据放到数据模型中
            Student *stu = [[Student alloc] init];
            stu.name = name;
            stu.number = number;
            stu.age = age;
            
            [arrayAll addObject:stu];
        }
    }else
        NSLog(@"查询失败");
    // 游标用完之后要释放:
    sqlite3_finalize(stmt);
    return arrayAll;
}
第三方FMDB 也类似,比这个简单 在“自己看的东西”里有提到


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值