FMDB(1)

作者: 初灬终 | 来源:发表于2017-12-10 21:07 被阅读6次

一.FMDB简单使用

#import <Foundation/Foundation.h>

@class Person;

@interface DataBase : NSObject
@property(nonatomic,strong) Person *person;
+ (instancetype)sharedDataBase;

#pragma mark - Person

- (void)addPerson:(Person *)person;

- (void)deletePerson:(Person *)person;

- (void)updatePerson:(Person *)person;

- (NSMutableArray *)getAllPerson;
#import "DataBase.h"
#import <FMDB.h>
#import "Person.h"

static DataBase *_DBCtl = nil;

@interface DataBase()
@property (nonatomic, strong) FMDatabase *db;
@end

@implementation DataBase

+ (instancetype)sharedDataBase{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _DBCtl = [[DataBase alloc] init];
        [_DBCtl initDataBase];
    });
    return _DBCtl;
}

- (void)initDataBase{
    
    // 文件路径
    NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    NSString *filePath = [documentsPath stringByAppendingPathComponent:@"model.sqlite"];
    // 实例化FMDataBase对象
    _db = [FMDatabase databaseWithPath:filePath];
    
    [self createTable];
}

#pragma mark - 接口
//创建表
- (void)createTable {
    
    [_db open];
    // 初始化数据表
    NSString *personSql = @"CREATE TABLE `person` (`id` INTEGER PRIMARY KEY AUTOINCREMENT  NOT NULL ,`person_id` VARCHAR(255),`person_name` VARCHAR(255),`person_age` VARCHAR(255),`person_number` VARCHAR(255)) ";
    NSString *carSql = @"CREATE TABLE `car` (`id` INTEGER PRIMARY KEY AUTOINCREMENT  NOT NULL ,`own_id` VARCHAR(255),`car_id` VARCHAR(255),`car_brand` VARCHAR(255),`car_price`bVARCHAR(255)) ";
    
    [_db executeUpdate:personSql];
    [_db executeUpdate:carSql];
    [_db close];
}

//增加数据
- (void)addPerson:(Person *)person{
    [_db open];
    [_db executeUpdate:@"INSERT INTO person(person_name,person_age,person_number)VALUES(?,?,?,?)",person.name,@(person.age),@(person.number)];
    [_db close];
}

//删除数据
- (void)deletePerson:(Person *)person{
    [_db open];
    [_db executeUpdate:@"DELETE FROM person WHERE person_id = ?",person.ID];
    [_db close];
}

// 更新数据
- (void)updatePerson:(Person *)person{
    [_db open];
    [_db executeUpdate:@"UPDATE `person` SET person_name = ?  WHERE person_id = ? ",person.name,person.ID];
    [_db executeUpdate:@"UPDATE `person` SET person_age = ?  WHERE person_id = ? ",@(person.age),person.ID];
    [_db executeUpdate:@"UPDATE `person` SET person_number = ?  WHERE person_id = ? ",@(person.number + 1),person.ID];
    [_db close];
}

//获取所有数据
- (NSMutableArray *)getAllPerson{
    [_db open];
    NSMutableArray *dataArray = [[NSMutableArray alloc] init];
    FMResultSet *res = [_db executeQuery:@"SELECT * FROM person"];
    while ([res next]) {
        Person *person = [[Person alloc] init];
        person.ID = @([[res stringForColumn:@"person_id"] integerValue]);
        person.name = [res stringForColumn:@"person_name"];
        person.age = [[res stringForColumn:@"person_age"] integerValue];
        person.number = [[res stringForColumn:@"person_number"] integerValue];
        [dataArray addObject:person];
    }
    [_db close];
    return dataArray;
}
@end

问题:如果像上边那样子,基本上每个模型,都要写对应的增删除改方法,对应的实现里都要写mysql语句,相当繁琐易出错。
改进:用runtime拼接mysql语句,无需所有模型都写增删除改方法。

相关文章

  • FMDB的简述和简单使用

    一、FMDB的概念 1.什么是FMDB? (1)FMDB是iOS平台的SQLite数据库框架 (2)FMDB以OC...

  • FFDB

    FMDB的使用 FMDBDemo 目录 1、FMDB介绍2、FMDB导入3、FMDB框架中重要的框架类3.1、FM...

  • 下载地址

    1.FMDB : https://github.com/ccgus/fmdb

  • Swift5-SQLite三方库FMDB使用-多线程

    FMDB库git下载地址:https://github.com/ccgus/fmdb 一、FMDB配置 1.使用p...

  • 9.2 FMDB-应用

    FMDB-应用1 FMDB-应用.png FMDB-应用2----xiaoqiang/卢强/网络阶段/网络\ --...

  • iOS FMDB使用

    1、FMDB下载地址 FMDB下载链接 2、添加FMDB到你的项目 1、pod方式,不会pod方式的这里有教程 2...

  • iOS数据库之FMDB、Realm、WCDB

    1.引子FMDB FMDB详解FMDB的git链接 1.1 它基于SQLite 封装,对于有SQLite 和Obj...

  • Swift 3.0 FMDB 初试

    1、pod导入FMDB podfile 内容如下: pod install 2、FMDB的使用

  • iOS-OC 新手 数据库之FMDB 看这篇就够了(附Demo)

    1. FMDB数据存储 - 概念篇 首先FMDB是对苹果sqlite的封装,sqlite是苹果自带的,FMDB给我...

  • FMDB(1)

    一.FMDB简单使用 问题:如果像上边那样子,基本上每个模型,都要写对应的增删除改方法,对应的实现里都要写mysq...

网友评论

      本文标题:FMDB(1)

      本文链接:https://www.haomeiwen.com/subject/ydovixtx.html