美文网首页
FMDB的简单使用

FMDB的简单使用

作者: 见哥哥长高了 | 来源:发表于2018-03-24 12:41 被阅读97次

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 <FMDB/FMDB.h>
首先我们需要指定一下文件的存储路径,数据源,数据库对象。在这里为了方便我们给控制器搞几个全局的属性

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

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

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

同时新建一个类Person

#import <Foundation/Foundation.h>

@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简单使用

    FMDB简单使用 FMDatabase的使用 FMDatabaseQueue的使用 使用FMDatabaseQue...

  • iOS FMDB增删改查

    FMDB是一款简洁、易用的封装库,下面简单介绍下FMDB的使用: 在FMDB下载文件后,导入工程中,并使用 lib...

  • fmdb简单使用

    1.其实平时简单的使用不过就是增删改改查,我们看一下代码 数据库的创建: 以上所用的语言就是sqlite语言相信用...

  • FMDB的简单使用

    FMDB:一种轻量级的数据库,使用起来非常的方便。其相比于SQLite NSUserDefaults等来说,有很多...

  • FMDB的简单使用

    1.FMDB简单介绍 iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便。于是,就出现了一系...

  • FMDB的简单使用

    前言:FMDB的导入和优点直接略过,简单粗暴直接看使用。 1、创建表 2、查询表 注意:"select * fro...

  • FMDB的简单使用

    前言 日常的项目中,我们经常涉及到数据持久化的问题,苹果给我们提供的出具持久化方案有属性列表(plist)、归档(...

  • FMDB的简单使用

    FMDB的下载地址是:https://github.com/ccgus/fmdb工程中使用FMDB,必须导入lib...

  • FMDB的简单使用

    FMDB的github地址https://github.com/ccgus/fmdb FMDB有三个主要的类FMD...

  • FMDB的简单使用

    1.什么是FMDB FMDB是iOS平台的SQLite数据库框架,以OC的方式封装了SQLite的C语言API。 ...

网友评论

      本文标题:FMDB的简单使用

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