vickate_iOS_FMDB 对数据库的增删改查

准备工作:
(1)导入FMDB第三方框架
(2)引入 sqlite3.0框架
(3)在需要使用的 viewController 里面导入 fmdb.h 和 sqlite3.0.h头文件

1.建表

- (void)addTable
{
    // 创建数据库存储的路径
    NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
    // 在路径后面拼接文件名,即创建文件
    NSString *dbPath = [documentPath stringByAppendingString:@"Article.sqlite"];
    // 打印文件路径
    NSLog(@"文件路径:%@", dbPath);
    // 初始化数据库
    self.database = [FMDatabase databaseWithPath:dbPath];
#pragma mark --- 创建表
    [self.database open];
    // executeUpdate:@"create table 表名 (列名 类型,..... )"
    [self.database executeUpdate:@"create table user (name text, age integer, myData blob)"];
    NSLog(@"创建表成功");
    [self.database close];
}

2.增加数据

// 增
- (IBAction)addData:(id)sender {
    [self.database open];
    NSMutableArray *one = [NSMutableArray array];
    [one addObject:@"123"];
    [one addObject:@"456"];
    NSData *data1 = [NSKeyedArchiver archivedDataWithRootObject:one];
    FMResultSet *rs = [self.database executeQuery:@"insert into user(name,age,myData) values(?,?,?)" withArgumentsInArray:@[@"张三",@18,data1]];
    [rs next];
    FMResultSet *rs1 = [self.database executeQuery:@"insert into user(name,age,myData) values(?,?,?)" withArgumentsInArray:@[@"李四",@19,data1]];
    [rs1 next];

    NSLog(@"***%@", self.database);
    if (self.database != NULL) {
        NSLog(@"导入数据成功");
    }
    [self.database close];
}

2.删除数据

- (IBAction)deleteData:(id)sender {
    [self.database open];
#pragma mark --- 按条件删除
//    [self.database executeUpdateWithFormat:@"delete from user where name = %@", @"李四"];
#pragma mark --- 删除整个表
    [self.database executeUpdateWithFormat:@"delete from user"];
    NSLog(@"删除数据成功");
    [self.database close];
}

4.改数据

- (IBAction)alterData:(id)sender {
    [self.database open];
    NSString *newName = @"王五";
    NSString *oldName = @"张三";
    //update 表名 set 新的参数 = 类型 where 旧的参数 = 类型
    [self.database executeUpdateWithFormat:@"update user set name = %@ where name = %@",newName,oldName];
    NSLog(@"修改数据成功");
    [self.database close];
}

5.查找数据

- (IBAction)select:(id)sender {
    [self.database open];
#pragma mark --- 按条件查询 按条件查询 [self.database intForQuery(根据类型来写)
//    NSInteger age = [self.database intForQuery:@"select age from user where name = ?", @"李四"];
//    NSLog(@"%ld", (long)age);
#pragma mark --- 查询整个表 按整个表查询 [self.database executeQuery:@"select * from user"]
    FMResultSet *rs = [self.database executeQuery:@"select * from user"];
    //[rs next]遍历条件 遍历前为YES 遍历结束为NO
    while ([rs next] == YES) {
        NSString *name = [rs stringForColumn:@"name"];
        NSInteger age = [rs longLongIntForColumn:@"age"];
        NSData *data = [rs dataForColumn:@"myData"];
        NSMutableArray *testArr = [NSKeyedUnarchiver unarchiveObjectWithData:data];
        NSLog(@"name = %@, age = %ld, myData = %@", name, age, testArr);
    }
    NSLog(@"查询数据成功");
    [self.database close];
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值