一 FMDB的简单说明及介绍

FMDB的github地址 https://github.com/ccgus/fmdb

FMDB是一款简洁的,易用的封装库,简单介绍一下FMDB的使用

在FMDB下载文件后,工程中必须导入如下文件,并使用libsqlite3.0.tbd依赖包

FMDB同时兼容ARC和非ARC工程,会自动根据工程配置来调整相关的内存管理代码.

二.FMDB的核心类

FMDB有三个主要的类

(1)FMDatabase

一个FMDatabase对象就代表一个单独的SQLite数据库,用来执行SQL语句

(2)FMResultSet

使用FMDatabase执行查询后的结果集(即所查询结果的集合)

(3)FMDatabaseQueue

用于多线程中执行多个查询或更新,它是线程安全的

三.打开数据库

通过指定的SQLite数据库文件路径创建FMDatabase对象

path 为所创建数据库的路径

FMDatabase *db = [FMDatabase databaseWithPath:path];

if (![db open]){

NSLog(@"数据库打开失败");

}

文件路径有三种情况

(1)具体文件路径

如果不存在会自动创建

(2)空字符串@""

会在临时目录创建一个空得数据库

当FMDatabase连接关闭时,数据库文件也会被删除

(3)nil

会创建一个内存中林女士数据库,当FMDatabase连接关闭时,数据库会被销毁

四 执行更新

在FMDB中,除查询以外的所有操作都称为更新

create、drop、insert、update、delete等

使用executeUpdate:方法执行更新

示例

[db executeUpdate:@"UPDATE t_student SET age = ? WHERE name = ?;", @20, @"Jack"]

五.执行查询

查询方法

- (FMResultSet *)executeQuery:(NSString*)sql, ...

- (FMResultSet *)executeQueryWithFormat:(NSString*)format, ...

- (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray *)arguments

示例代码

//

//  ViewController.m

//  数据库

//  Copyright © 2016年 zm. All rights reserved.

//

#import "ViewController.h"

#import "FMDB.h"

@interface ViewController ()

@property (nonatomic,strong)FMDatabase *db;

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

//1. 获取数据库文件的路径

NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

NSString *fileName= [doc stringByAppendingPathComponent:@"student.sqlite"];

//2.获取数据库

FMDatabase *db = [FMDatabase databaseWithPath:fileName];

//3.打开数据库

if ([db open]) {

//创表

BOOL result = [db executeUpdate:@"create table if not exists t_student (id integer primary key autoincrement,name text not null,age integer not null);"];

if (result) {

NSLog(@"创建表成功");

}else{

NSLog(@"创建表失败");

}

}

self.db = db;

}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

[self delete];

[self insert];

[self query];

}

//删除数据

- (void)delete{

[self.db executeUpdate:@"drop table if exests t_student;"];

[self.db executeUpdate:@"create table if not exists t_student (id integer primary key autoincrement,name text not null, age integer not null);"];

}

//插入数据

- (void)insert{

for (int i = 0; i < 10; i++) {

NSString *name = [NSString stringWithFormat:@"jack-%d",arc4random_uniform(40)];

[self.db executeUpdate:@"insert into t_student (name,age) values (?,?);",name,@(arc4random_uniform(40))];

}

}

//查询

-(void)query{

//1.执行查询语句

FMResultSet *resultSet = [self.db executeQuery:@"select * from t_student"];

//2遍历结果

while ([resultSet next]) {

int ID = [resultSet intForColumn:@"id"];

NSString *name = [resultSet stringForColumn:@"name"];

int age = [resultSet intForColumn:@"age"];

NSLog(@"%d %@ %d",ID,name,age);

}

}

@end

iOS 数据库第三方FMDB的简单使用的更多相关文章

  1. [iOS]数据库第三方框架FMDB详细讲解

    [iOS]数据库第三方框架FMDB详细讲解 初识FMDB iOS中原生的SQLite API在进行数据存储的时候,需要使用C语言中的函数,操作比较麻烦.于是,就出现了一系列将SQLite API进行封 ...

  2. 第三方FMDB的简单使用

    1,导入第三方头文件 #import "FMDB.h" //定义全局变量 @implementation InputInformationViewController { UITe ...

  3. iOS开发数据库篇—FMDB简单介绍

    iOS开发数据库篇—FMDB简单介绍 一.简单说明 1.什么是FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API 2.FMDB的优点 使用起来 ...

  4. iOS 数据库操作(使用FMDB)

    iOS 数据库操作(使用FMDB)   iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.Plausibl ...

  5. IOS数据库FMDB增、删、改、查的使用【原创】

    http://blog.it985.com/13588.html IOS数据库FMDB增.删.改.查的使用[原创] FMDB是一个XCODE的中一个轻量级的数据库,用于将网络资源存储在本地.所以,FM ...

  6. SQLite数据库框架--FMDB简单介绍

    1.什么是FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API 2.FMDB的优点 使用起来更加面向对象,省去了很多麻烦.冗余的C语言代码 对比 ...

  7. iOS开发数据库篇—FMDB数据库队列

    iOS开发数据库篇—FMDB数据库队列 一.代码示例 1.需要先导入FMDB框架和头文件,由于该框架依赖于libsqlite库,所以还应该导入该库. 2.代码如下: // // YYViewContr ...

  8. iOS中使用FMDB事务批量更新数据库

    今天比较闲看到大家在群里讨论关于数据库操作的问题,其中谈到了"事务"这个词,坦白讲虽然作为计算机专业的学生,在上学的时候确实知道存储过程.触发器.事务等等这些名词的概念,但是由于毕 ...

  9. iOS开发中FMDB的使用

    1.什在日常的开发中,我们需要用到离线缓存将数据信息存入数据库,在没有网络的时候进行加载,而我们IOS用的就是sqlite3数据库,用原生的sql我们也能实现,但是书写起来比较麻烦,尤其是其它语言转过 ...

随机推荐

  1. C语言格式化输出,空位补0,空位补空格

    char strTtimeDump[512] = ""; int a = 5; sprintf(strTtimeDump, "%.4d", a); //strT ...

  2. nginx+uwsgi部署python web(web.py)

    1.nginx: nginx 是一个 http 服务器,与 apache.lighttpd.Microsoft IIS 等属于同类产品. 2.uWSGI: uWSGI 是一个快速的.纯C语言开发的.自 ...

  3. 5.7.1.3 Global 对象的属性

    Global对象还包含了一些属性,例如,特殊的值undefined.NaN以及Infinity都是Global对象的属性.此外,所有原生引用类型的构造函数,像Object和Function,也都是Gl ...

  4. linux用户管理最常用的三个文件说明(不完整版)

    涉及到三个文本文件:/etc/passwd /etc/shadow /etc/group 文件相关: /etc/passwd和用户名相关 /etc/shadow和密码相关 /etc/group和用户所 ...

  5. docker4dotnet

    docker4dotnet #1 – 前世今生 & 世界你好   作为一名.NET Developer,这几年看着docker的流行实在是有些眼馋.可惜的是,Docker是基于Linux环境的 ...

  6. C#获取桌面壁纸图片的路径(Desktop Wallpaper)

    原文 C#获取桌面壁纸图片的路径(Desktop Wallpaper) 利用 Windows 的 API 获取桌面壁纸的实际路径,使用的是 SystemParametersInfo 这个API,此AP ...

  7. c#读写共享内存操作函数封装

    原文 c#读写共享内存操作函数封装 c#共享内存操作相对c++共享内存操作来说原理是一样,但是c#会显得有点复杂. 现把昨天封装的读写共享内存封装的函数记录下来,一方面希望给需要这块的有点帮助,另一方 ...

  8. perl lwp 超时问题

    lwp 超时问题: jrhmpt01:/root/async# cat a1.pl use LWP::UserAgent; use utf8; use DBI; use POSIX; use Data ...

  9. 统计难题(trie树)

    统计难题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)Total Submi ...

  10. JS实现日历控件选择后自动填充

    最近在做人事档案的项目,在做项目的初期对B/S这块不是很熟悉,感觉信心不是很强,随着和师哥同组人员的交流后发现,调试程序越来越好了,现在信心是倍增,只要自己自己踏实的去研究.理解代码慢慢的效果就出来了 ...