一 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. SqlDataAdapter的方法之一Fill (DataSet dataset, String datatable)解释

    一.SqlDataAdapter的方法之一Fill (DataSet dataset, String datatable)解释:根据datatable名填充Dataset.myda.Fill(ds, ...

  2. js页面loading加载

    <html>     <head>     <title>页面正在载入</title>       <script  language=" ...

  3. FMDB 直接将查询结果转化为字典

    今天学习FMDB框架,发现非常好用的一点,就是就以把查询结果直接转化为字典 NSString *querySql = @"select * from stuInfo"; NSMut ...

  4. 【JAVA】导出jar包时,Class files on classpath not found

    是因为\META-INF\MANIFEST.MF文件里面配置错误 错误版本 Manifest-Version: 1.0Class-Path: 正确版本 Manifest-Version: 1.0Cla ...

  5. C++数组与指针

    指向数组元素的指针 一个变量有地址,一个数组包含若干元素,每个数组元素都在内存中占用存储单元,它们都有相应的地址.指针变量既然可以指向变量,当然也可以指向数组元素(把某一元素的地址放到一个指针变量中) ...

  6. ASP.NET MVC Framework

    ASP.NET MVC Framework是微软在ASP.NET中所添加的一组类库,这组类库可以使用Model-View-Controller的设计模式来开发ASP.NET的应用程序.它与现有的ASP ...

  7. PHP发送短信如何实现?

    最近要用php发送和接收短信,用户订单要用短信通知一类的功能,网上看了好多短信平台感觉都不靠谱. 也测试了很多代码,下面把几款PHP发送短信好用的分享给大家: PHP发送短信方法一(比较好,推荐) / ...

  8. Java "==和equals区别" 示例

    import java.util.Calendar; import java.util.Date; import java.util.Locale; public class test { publi ...

  9. datatable,查询,排序,复制等操作

    DataTable排序,检索,合并详解 一.排序 获取DataTable的默认视图 对视图设置排序表达式 用排序后的视图导出的新DataTable替换就DataTable (Asc升序可省略,多列排序 ...

  10. ios如何实现推送通知

    推送通知的步骤:1.询问是否允许推送通知.2.如果用户允许在APPDELEGATE 中实现 - (void)application:(UIApplication *)application didRe ...