美文网首页
FMDB-使用

FMDB-使用

作者: small_Sea | 来源:发表于2016-11-17 15:33 被阅读0次
    test.png

    FMDB 增删改查

    1. FMDB 优点:
      [1] 使用起来更加面向对象,省去了很多麻烦、冗余的C语言代码
      [2] 对比苹果自带的Core Data框架,更加轻量级和灵活
      [3] 提供了多线程安全的数据库操作方法,有效地防止数据混乱

    2. 核心类
      [1] FMDatabase:
      一个FMDatabase对象就代表一个单独的SQLite数据库
      用来执行SQL语句
      [2] FMResultSet:
      使用FMDatabase执行查询后的结果集
      [3] FMDatabaseQueue:
      用于在多线程中执行多个查询或更新,它是线程安全的

    #import "FMDBModel.h"
    #import "FMDB.h"
    // 创建数据库
    NSString *create = @"CREATE TABLE IF NOT EXISTS t_GESTURE (iPhone text NOT NULL ,password text NOT NULL)";
    
    //delete from是删除关键字,后面是要删的表名,然后可以选择跟一个where限制,限制参考修改
    NSString *delete = @"delete from t_GESTURE where iPhone = ?";
    
    //update是修改的关键字,后面是t_GESTURE表名,set表示修改动作的关键字,set后面跟着被改的字段名及其要改的内容(要改的内容也可以是?),再后面可以加where限制,也可以不加,where后面是字段=内容的结构,内容同样可以为?
    NSString *updateTable = @"update t_GESTURE set password = ? where iPhone = ?";
    
    // 查询数据库
    NSString *selectTable = @"SELECT * FROM t_GESTURE";
    
    @interface FMDBModel ()
    @property (nonatomic,strong) FMDatabase *db;
    @end
    @implementation FMDBModel
    +(FMDBModel *)fModel{
    static FMDBModel *fModel = nil;
      static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        if (!fModel) {
             fModel = [[FMDBModel alloc] init];
            NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"FMDB.sqlite"];
            FMDatabase *db = [FMDatabase databaseWithPath:path];
            [db open];
            NSLog(@"%@",path);
            [db executeUpdate:create];
            [db close];
            fModel.db = db;
        }
    });
    return  fModel;
    }
    
    - (void)insert{
    [self.db open];
    BOOL isInsert = [self.db executeUpdate:@"insert into t_GESTURE(iphone,password) VALUES (?,?)",self.phone,self.password];
    if (isInsert) {
        NSLog(@"插入成功");
    }
    [self.db close];
    }
    - (void)Delete{
    [self.db open];
    //2、调用删除语句
    BOOL isDelCharactor = [self.db executeUpdate:delete,self.phone];
    if (isDelCharactor) {
        NSLog(@"成功");
    }
    [self.db close];
    }
    - (void)change{
    [self.db open];
    //2、调用修改语句
    BOOL isUpdate = [self.db executeUpdate:updateTable,self.password,self.phone];
    if(isUpdate == NO)
    {
        NSLog(@"修改失败");
        return;
    }else{
        NSLog(@"修改成功");
    }
    [self.db close];
    }
    - (void)query{
    [self.db open];
    // 查询
    FMResultSet *resultSet = [self.db executeQuery:selectTable];
    while ([resultSet next]) {
        NSString *phone = [resultSet stringForColumn:@"iPhone"];
        NSString *password = [resultSet stringForColumn:@"password"];
        NSLog(@" %@ %@",phone,password);
    }
    [self.db close];
    }
    
    使用
    // 插入
    - (IBAction)ConfirmDown:(id)sender {
    [FMDBModel fModel].phone = self.iPhone.text;
    [FMDBModel fModel].password = self.password.text;
    [[FMDBModel fModel] insert];
    }
    
    // 查询
    - (IBAction)SelectDown:(id)sender {
    [[FMDBModel fModel] query];
    }
    
    // 删除
    - (IBAction)Delete:(id)sender {
    [FMDBModel fModel].phone = self.iPhone.text;
    [FMDBModel fModel].password = self.password.text;
    [[FMDBModel fModel] Delete];
    }
    // 修改
    - (IBAction)change:(id)sender {
    [FMDBModel fModel].phone = self.iPhone.text;
    [FMDBModel fModel].password = self.password.text;
    [[FMDBModel fModel] change];
    }

    相关文章

      网友评论

          本文标题:FMDB-使用

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