2018-07-11 FMDB使用

2018-07-16  本文已影响14人  北你妹的风

之前都是直接用sqlite 的C语言API,感觉也没有什么不好用的,就是封装性不好,不能重用;CoreData也用过,感觉太笨重,真心不好用。

从今天开始学下FMDB和WCDB.

一、简单说明

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

它的优点有:

1、更加面向对象,省去了大量的冗余的C语言代码

2、相比CoreData,更加轻量级和灵活

3、提供了多线程安全的数据库操作方法,有效地防止数据混乱

二、核心类

1、FMDatabase

数据库对象,一个FMDatabase对象就代表一个独立的sqlite数据库,可以用来执行各种sql语句。

2、FMResultSet

结果集,sql语句的执行结果

3、FMDatabaseQueue

线程安全的队列,用于在多线程环境中执行查询或修改操作

三、增删改查

在增删改查之前,要先创建表结构。

在FMDB中,除了查询以外,所有的操作都是update,包括建表。

打开数据库:

 NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];

 NSString *dbPath = [docPath stringByAppendingString:@"/test.db"];

 FMDataBase *db = [FMDatabase databaseWithPath:dbPath];

1、创建表结构:

   if([db open]) {

        NSString *sql = @" create table if not exists student('ID' INTEGER PRIMARY KEY AUTOINCREMENT,'name' TEXT NOT NULL,'phone' TEXT NOT NULL,'score' INTEGER NOT NULL)";

        BOOLflag = [self.dbexecuteUpdate:sql];

        if(flag) {

            NSLog(@"create table success");

        }

   }

2、新增

 NSString *sql = [NSString stringWithFormat:@"insert into student (name,phone,score) values (?,?,?)"];

 BOOL result = [self.db executeUpdate:sql withArgumentsInArray:@[@"lzt",@"13569874154",@(69)]];

 if(result) {

        NSLog(@"insert ok");

 }

3、修改

NSString *sql = [NSString stringWithFormat:@"update student set name = ?  where  id = ? "];

 BOOL result = [self.db executeUpdate:sql withArgumentsInArray:@[@"lztOK",@(2)]];

    if(result) {

        NSLog(@"update ok");

    }

4、删除

 NSString *sql = [NSString stringWithFormat:@" delete  from student where id = ? "];

    BOOL result = [self.db executeUpdate:sql withArgumentsInArray:@[@(1)]];

    if(result) {

          NSLog(@"delete  ok");

    }

最后,要记得关闭数据库 [db close]

上一篇下一篇

猜你喜欢

热点阅读