• FMDB源码解析(上)-FMDB基本使用


    最后更新:2017-02-22

    2017, 说到做到


    一: 初识FMDB

    1. FMDB是iOS平台的SQLite数据库框架
    2. FMDB以OC的方式封装了SQLite的C语言API
    3. GitHub链接: https://github.com/ccgus/fmdb

    优点:

    1. 面向对象,使用更加简单,没必要写复杂的C语言代码;
    2. 提供多线程本安全,有效地防止数据混乱;

    缺点:

    1.用OC对SQLite的封装,失去了C语言的跨平台性;

    二: 基本使用

    FMDB有三个主要的类

    • FMDatabase – 表示一个单独的SQLite数据库。 用来执行SQLite的命令。

    • FMResultSet – 表示FMDatabase执行查询后结果集

    • FMDatabaseQueue – 如果你想在多线程中执行多个查询或更新,你应该使用该类。这是线程安全的。

    三: 基本操作

    1. 数据库创建

    创建FMDatabase对象时参数为SQLite数据库文件路径。该路径可以是以下三种之一:

    1. 文件路径。

      • 该文件路径无需真实存,如果不存在会自动创建。
    2. 空字符串(@”")。

      • 表示会在临时目录创建一个空的数据库,当FMDatabase 链接关闭时,文件也被删除。
    3. NULL.

      • 将创建一个内在数据库。同样的,当FMDatabase连接关闭时,数据会被销毁.
    FMDatabase *db = [FMDatabase databaseWithPath:path];
    

    2. 打开数据库

    在和数据库交互 之前,数据库必须是打开的,如果资源或权限不足无法打开或创建数据库,都会导致打开失败。

    if (![db open]) {
        [db release];
        return;
    }
    

    3. 执行更新

    一切不是SELECT命令的命令都视为更新。
    这包括

    • CREATE (创建)
    • UPDATE (更新)
    • INSERT (插入)
    • ALTER
    • COMMIT,
    • BEGIN,
    • DETACH,
    • DELETE,
    • DROP,
    • END,
    • EXPLAIN,
    • VACUUM,
    • REPLACE。
    • 。。。
    
    -(BOOL)executeUpdate:(NSString)sql, ...
    -(BOOL)executeUpdateWithFormat:(NSString)format, ...
    -(BOOL)executeUpdate:(NSString)sql withArgumentsInArray:(NSArray )arguments
    
    执行更新返回一个BOOL值。YES表示执行成功,NO表示失败
    
    执行错误,可以调用 -lastErrorMessage 和 -lastErrorCode方法来得到更多信息。
    

    4.执行查询

    1. SELECT命令就是查询

      - (FMResultSet *)executeQuery:(NSString*)sql, ...
      - (FMResultSet *)executeQueryWithFormat:(NSString*)format, ...
      - (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray *)arguments
      
      成功返回 FMResultSet对象,错误返回 nil
      
      执行错误,可以调用 -lastErrorMessage 和 -lastErrorCode方法来得到更多信息。
      
    2. 获取结果

      FMResultSet *s = [db executeQuery:@"SELECT * FROM myTable"];
      while ([s next]) {
          //retrieve values for each record
      }
      

    FMResultSet 提供了很多方法来获得所需的格式的值:

    ```objc
    intForColumn:
    longForColumn:
    longLongIntForColumn:
    boolForColumn:
    doubleForColumn:
    stringForColumn:
    dataForColumn:
    dataNoCopyForColumn:
    UTF8StringForColumnIndex:
    objectForColumn:
    ```
    

    你无需调用 [FMResultSet close]来关闭结果集, 当新的结果集产生,或者其数据库关闭时,会自动关闭。

    5. 关闭数据库
    当使用完数据库,你应该 -close 来关闭数据库连接来释放SQLite使用的资源。

     [db close];
    

    结束

    参开列表:唐巧-在iOS开发中使用FMDB

  • 相关阅读:
    handsontable合并项mergeCells应用及扩展
    handsontable的基础应用
    overflow的使用
    阿里云服务器磁盘空间扩容步骤
    使用Gitblit 在Windows2008 r2上部署Git Server(完整版)
    搭建一个基于微信公众号的信息采集功能
    js数组内置方法
    C#数组、js数组、json
    将EF项目从dbfirst转化为codefirst
    通过HttpWebRequest调用webService
  • 原文地址:https://www.cnblogs.com/gaox97329498/p/12070463.html
Copyright © 2020-2023  润新知