FMDB的简单使用

FMDB:一种轻量级的数据库,使用起来非常的方便。其相比于SQLite NSUserDefaults等来说,有很多的优点,在这里不再单独介绍,在这里需要提一下的就是我们在使用的时候需要掌握并熟练运用一些基本的SQL语句。下面我们就将通过具体的代码操作来掌握其简单使用。

准备阶段

在使用之前我们需要把FMDB即成到项目中 :️手动集成和CocoaPods集成,两种方式都很简单。推荐使用CocoaPods集成,因为以后更新的 时候也是非常的简单。
打开终端:cd 切换到项目所在路径--->vim Podfile 文件 新建一个Podfile文件--->i健进入编辑模式--->在文件中输入一下内容

platform:ios,'8.0'
use_frameworks!
def pods
  pod 'ReactiveCocoa', '2.3.1'
  pod 'FMDB'   //因为测试 我就随便建了一个工程,在这里不设置版本好 默认安装到最新的版本
end
target 'LGJTestDemo' do
  pods
end

手动集成:在需要用到FMDB的地方引入头文件#import "FMDB.h"
CocoaPods集成:在需要用到FMDB的地方引入头文件#import
首先我们需要指定一下文件的存储路径,数据源,数据库对象。在这里为了方便我们给控制器搞几个全局的属性

//数据库对象
@property(nonatomic,strong)FMDatabase *db;

//数据存储路径
@property(nonatomic,strong)NSString *dbPath;

//数据源
@property(nonatomic, strong)NSMutableArray *lists;

同时新建一个类Person

#import 

@interface Person : NSObject

@property(nonatomic, strong)NSString *name;

@property(nonatomic, strong)NSString *age;

@property(nonatomic, strong)NSString *identifier;

@end
建表

首先我们指定文件的存储路径:

 NSString *doc  = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
 NSString *filepath = [doc stringByAppendingPathComponent:@"/userData.sqlite"];
 self.dbPath = filepath;

接下来是拿到数据库,建表

    //获得数据库
    FMDatabase *db = [FMDatabase databaseWithPath:self.dbPath];
    //打开数据库
    if ([db open]) {
        BOOL result = [db executeUpdate:@"CREATe TABLE IF NOT EXISTS t_userData(id integer PRIMARY KEY AUTOINCREMENT,userName text NOT NULL, userAge text NOT NULL);"];
        if (result) {
            NSLog(@"创建表成功");
        }else{
            NSLog(@"创建表失败");
        }
    }
    self.db = db;
查询数据并显示
-(void)queryDataAndDisplay{
    
    FMDatabase *db = [FMDatabase databaseWithPath:self.dbPath];
    if ([db open]) {
        
    }
    self.db = db;
    FMResultSet *resultSet = [self.db executeQuery:@"SELECT * FROM t_userData"];
    [self.lists removeAllObjects];
    while ([resultSet next]) {
        NSString *name = [resultSet stringForColumn:@"userName"];
        NSString *age = [resultSet stringForColumn:@"userAge"];
        NSString *ID = [resultSet stringForColumn:@"id"];
        Person *person = [Person new];
        person.name = name;
        person.age = age;
        person.identifier = ID;
        [self.lists addObject:person];
    }
    [self.tableView reloadData];
}
增删改

增加数据

-(void)insertdata{
    if (self.textField1.text.length == 0 || self.textField1.text.length == 0) {
        NSLog(@"姓名或者年龄为空");
        return;
    }
    BOOL res = [self.db executeUpdate:@"INSERT INTO t_userData (userName, userAge) VALUES (?, ?);",_textField1.text, _textField2.text];
    if (!res) {
        NSLog(@"新增数据失败");
    }else{
        NSLog(@"新增数据成功");
        
        [self queryDataAndDisplay];
    }
}

删除数据

#pragma mark------删除其中的一条
-(void)deleteDataIn:(NSIndexPath *)indexPath{
    
    FMDatabase *db = [FMDatabase databaseWithPath:self.dbPath];
    if ([db open]) {
        Person *person = self.lists[indexPath.row];
        NSString *str =[NSString stringWithFormat:@"DELETE FROM t_userData WHERE id = %@",person.identifier];
        BOOL res = [db executeUpdate:str];
        if (!res) {
            NSLog(@"删除失败");
        }else{
            NSLog(@"删除成功");
        }
        [db close];
        [self queryDataAndDisplay];
    }
}
#pragma mark------删除全部
-(void)rightBarButtonItemClicked:(UIBarButtonItem *)sender{
    FMDatabase *db = [FMDatabase databaseWithPath:self.dbPath];
    if ([db open]) {
        NSString *str =[NSString stringWithFormat:@"DELETE FROM t_userData"];
        BOOL res = [db executeUpdate:str];
        if (!res) {
            NSLog(@"删除失败");
        }else{
            NSLog(@"删除成功");
        }
        [db close];
        [self queryDataAndDisplay];
    }
}

更新数据

-(void)leftBarButtonItemClicked:(UIBarButtonItem *)sender{
    FMDatabase *db = [FMDatabase databaseWithPath:self.dbPath];
    if ([db open]) {
        NSString *str =[NSString stringWithFormat:@"UPDATE t_userData SET userName = ?  WHERE  userName = ?"];
        BOOL res = [db executeUpdate:str,_textField1.text,_textField2.text ,@"有"];
        if (!res) {
            
            NSLog(@"修改失败");
        }else{
            NSLog(@"修改成功");
        }
        [db close];
        [self queryDataAndDisplay];
    }
}

以上就是FMDB最基础的用法,是不是觉得很简单,如果要进行更深层次的学习,大家可以查看FMDB的源代码,本人也将持续更新。。

你可能感兴趣的:(FMDB的简单使用)