FMDB

  • 1.概念:FMDB是ios平台的SQLite数据库框架,以OC的形式封装了SQLite的C语言的API

  • 2.优点:面向对象,轻量级,灵活,提供了多线程安全的数据库操作方法

  • 3.核心类

    • 1.FMDatabase:该对象代表一个单独的SQLite数据库,用来执行SQL语句

    • 2.FMResultSet:查询后的结果集

    • 3.FMDatabaseQueue:用于多线程中执行多个查询或更新,是线程安全的

  • 4.打开数据库


//实例化一个数据库对象
FMDatabase *db = [FMDatabase databaseWithPath:path];

if([db open]){
  //如果数据库打开成功
}

文件路径有三种情况

(1)具体文件路径

如果不存在会自动创建

(2)空字符串@""

会在临时目录创建一个空的数据库

当FMDatabase连接关闭时,数据库文件也被删除

(3)nil

会创建一个内存中临时数据库,当FMDatabase连接关闭时,数据库会被销毁

  • 5.执行更新

- (BOOL)executeUpdate:(NSString*)sql, ...

- (BOOL)executeUpdateWithFormat:(NSString*)format, ...

- (BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray *)arguments
  • 6.执行查询

查询方法:

- (FMResultSet *)executeQuery:(NSString*)sql, ...

- (FMResultSet *)executeQueryWithFormat:(NSString*)format, ...

- (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray *)arguments

示例:模糊查询

+(NSArray<CZProductModel *> *)queryAllProductWithKeyWord:(NSString *)keyword{

    NSString *sql = [NSString stringWithFormat:@"select * from t_product where proName like '%%%@%%'",keyword];
    FMResultSet *set = [_db executeQuery:sql];

    NSMutableArray *mArray = [NSMutableArray array];
    //取数据,一行行取数据
    while ([set next]) {
        //取该行的列数据
        int proNo = [set intForColumnIndex:0];
        NSString *proName = [set stringForColumn:@"proName"];
        int proPrice = [set intForColumnIndex:2];
        NSLog(@"%d,%@,%d",proNo,proName,proPrice);
        CZProductModel *model = [CZProductModel new];
        model.proNo = proNo;
        model.proName = proName;
        model.proPrice = proPrice;

        [mArray addObject:model];
    }

    return mArray.copy;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值