FMDB 用法


1.下载FMBD类库(导入到iOS 项目中的时候会报错

_sqlite3_bind_blob", referenced from:

这是需要 导入一个  libsqlite3.0.dblib 系统类库 在 Link Binary WithLibraries

 2.创建文件

#import <Foundation/Foundation.h>

#import "FMDB.h"


@class LVModal;

@interface LVFmdbTool : NSObject


// 插入模型数据

+ (BOOL)insertModal:(LVModal *)modal;


/** 查询数据,如果 传空 默认会查询表中所有数据 */

+ (NSArray *)queryData:(NSString *)querySql;


/** 删除数据,如果 传空 默认会删除表中所有数据 */

+ (BOOL)deleteData:(NSString *)deleteSql;


/** 修改数据 */

+ (BOOL)modifyData:(NSString *)modifySql;



@end


//****************** 封装工具类 *****************************



#import "LVFmdbTool.h"

#import "LVModal.h"


#define LVSQLITE_NAME @"modals.sqlite"


@implementation LVFmdbTool



static FMDatabase *_fmdb;


+ (void)initialize {

    // 执行打开数据库和创建表操作

    NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:LVSQLITE_NAME];

    _fmdb = [FMDatabase databaseWithPath:filePath];

    

    [_fmdb open];

    

#warning 必须先打开数据库才能创建表。。。否则提示数据库没有打开

    [_fmdb executeUpdate:@"CREATE TABLE IF NOT EXISTS t_modals(id INTEGER PRIMARY KEY, name TEXT NOT NULL, age INTEGER NOT NULL, ID_No INTEGER NOT NULL);"];

}


+ (BOOL)insertModal:(LVModal *)modal {

    NSString *insertSql = [NSString stringWithFormat:@"INSERT INTO t_modals(name, age, ID_No) VALUES ('%@', '%zd', '%zd');", modal.name, modal.age, modal.ID_No];

    return [_fmdb executeUpdate:insertSql];

}


+ (NSArray *)queryData:(NSString *)querySql {

    

    if (querySql == nil) {

        querySql = @"SELECT * FROM t_modals;";

    }

    

    NSMutableArray *arrM = [NSMutableArray array];

    FMResultSet *set = [_fmdb executeQuery:querySql];

    

    while ([set next]) {

        

        NSString *name = [set stringForColumn:@"name"];

        NSString *age = [set stringForColumn:@"age"];

        NSString *ID_No = [set stringForColumn:@"ID_No"];

        

        LVModal *modal = [LVModal modalWith:name age:age.intValue no:ID_No.intValue];

        [arrM addObject:modal];

    }

    return arrM;

}


+ (BOOL)deleteData:(NSString *)deleteSql {

    

    if (deleteSql == nil) {

        deleteSql = @"DELETE FROM t_modals";

    }

    

    return [_fmdb executeUpdate:deleteSql];


}


+ (BOOL)modifyData:(NSString *)modifySql {

    

    if (modifySql == nil) {

        modifySql = @"UPDATE t_modals SET ID_No = '789789' WHERE name = 'lisi'";

    }

    return [_fmdb executeUpdate:modifySql];

}



//******************* model 类 ****************************


#import <Foundation/Foundation.h>


@interface LVModal : NSObject


@property (nonatomic, copy) NSString *name;


@property (nonatomic, assign) NSInteger age;


@property (nonatomic, assign) NSInteger ID_No;



+ (instancetype)modalWith:(NSString *)name age:(NSInteger)age no:(NSInteger)ID_No;


@end



#import "LVModal.h"


@implementation LVModal


+ (instancetype)modalWith:(NSString *)name age:(NSInteger)age no:(NSInteger)ID_No {

    LVModal *modal = [[LVModal alloc] init];

    modal.name = name;

    modal.age = age;

    modal.ID_No = ID_No;

    return modal;

}


@end


//******************* 调用方法 ****************************


- (IBAction)queryBtnDidClick:(UIButton *)sender {

    

    [self.modalsArrM removeAllObjects];

    

    NSArray *modals = [LVFmdbTool queryData:nil];

    [self.modalsArrM addObjectsFromArray:modals];

    

    [self.tableView reloadData];

    

}

- (IBAction)deleteBtnDidClick:(UIButton *)sender {


    NSString *delesql = @"DELETE FROM t_modals WHERE name = 'zhangsan'";

    [LVFmdbTool deleteData:delesql];

    

#warning 删除数据后执行一次查询工作刷新表格

    [self queryBtnDidClick:nil];

}


- (IBAction)updateBtnDidClick:(UIButton *)sender {

    

    [LVFmdbTool modifyData:nil];

#warning 删除数据后执行一次查询工作刷新表格

    [self queryBtnDidClick:nil];

}





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值