最后更新: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

FMDB源码解析(上)-FMDB基本使用的更多相关文章

  1. FMDB源码解析

    上一篇博客讲述SQLite的使用,本篇将讲述FMDB源码,后面也会讲解SQLite在使用与FMDB的区别.本篇读下来大约20-30分钟,建议大家先收藏一下. FMDB是以OC方式封装SQLite中C语 ...

  2. Laravel学习笔记之Session源码解析(上)

    说明:本文主要通过学习Laravel的session源码学习Laravel是如何设计session的,将自己的学习心得分享出来,希望对别人有所帮助.Laravel在web middleware中定义了 ...

  3. spring源码解析--上

    本文是作者原创,版权归作者所有.若要转载,请注明出处. 首先是配置类 package com.lusai.config; import org.springframework.context.anno ...

  4. tinyxml源码解析(上)

    转载于:http://www.cnblogs.com/marchtea/archive/2012/11/09/2762669.html 前言: 前段时间做功能可行性的时候简单的使用了tinyxml.在 ...

  5. Kakfa揭秘 Day9 KafkaReceiver源码解析

    Kakfa揭秘 Day9 KafkaReceiver源码解析 上一节课中,谈了Direct的方式来访问kafka的Broker,今天主要来谈一下,另一种方式,也就是KafkaReceiver. 初始化 ...

  6. tinyxml源码解析(中)

    转载于:http://www.cnblogs.com/marchtea/archive/2012/11/20/2766756.html 前言: 之前趁着这段时间比较空闲,也因为听闻tinyxml大名, ...

  7. Spring源码解析系列汇总

    相信我,你会收藏这篇文章的 本篇文章是这段时间撸出来的Spring源码解析系列文章的汇总,总共包含以下专题.喜欢的同学可以收藏起来以备不时之需 SpringIOC源码解析(上) 本篇文章搭建了IOC源 ...

  8. 【原】FMDB源码阅读(二)

    [原]FMDB源码阅读(二) 本文转载请注明出处 -- polobymulberry-博客园 1. 前言 上一篇只是简单地过了一下FMDB一个简单例子的基本流程,并没有涉及到FMDB的所有方方面面,比 ...

  9. 【原】FMDB源码阅读(一)

    [原]FMDB源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 说实话,之前的SDWebImage和AFNetworking这两个组件我还是使用过的,但是对于 ...

随机推荐

  1. selenium学习-对当前浏览器窗口截屏

    方法:get_screenshot_as_file(filename) # coding=UTF-8 #16.对当前浏览器窗口截屏 import sys reload(sys) sys.setdefa ...

  2. 红帽学习笔记[RHCSA] 第一周

    目录 红帽学习笔记[RHCSA] 环境 第一课 关于Shell 命令的基础知识 在终端中敲命令的快捷键 本次课程涉及的命令 第二课 常用的目录结构与用途 本次课程涉及到的命令 第三课 关于Linux的 ...

  3. 6.float类型 和 char 类型

    float32  float64 package main import "fmt" func main() { var xxx float32 var xxxx float64 ...

  4. 01:django基础篇

    Django其他篇 目录: 1.1 django初探 1.2 第一个django项目 1.3 django render/redirect/HttpResponse 和 request.GET req ...

  5. T-聊天止于呵呵

    (现代版)俗话说:流言止于智者,聊天止于呵呵.输入一段聊天记录,你的任务是数一数有 多少段对话“止于呵呵”,即对话的最后一句话包含单词 hehe 或者它的变形. 具体来说,我们首先提取出对话的最后一句 ...

  6. JS中对数组元素进行增、删、改、查的方法,以及其他方法

    前言 昨天联调一个页面,看着就一个页面,接口倒是不少. 热点问题配置测试联调完成(同步异步接口共11个) 1.配置新增 2.配置编辑 3.配置删除 4.热点问题新增 5.热点问题编辑 6.热点问题删除 ...

  7. 记录一次TabBar使用本地图片

    方法一: 第一步:import  addpng  from '../../assets/img/add.png' 第二步: { title: '找折扣', image: addpng}, 即可. 方法 ...

  8. InisghtFace 制作自定义数据集和模型训练评估

    前言 本文以lfw数据集进行示例 lfw结果集下载地址:http://vis-www.cs.umass.edu/lfw/lfw.tgz insightface源码下载地址:https://github ...

  9. 系统环境: CentOS 64位+千万不要在生产环境中升级glibc!

    # cd /lib64# LD_PRELOAD=/lib64/libc-2.15.so ln -sf /lib64/libc-2.15.so libc.so.6 libc-2.15.so 这个文件名根 ...

  10. slots_doc_call属性

    class Foo: "这时文档doc属性" __slots__ = ["name","age"] #[“name”=None,“age&q ...