一 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. zen-coding for notepad++,前端最佳手写代码编辑器

    zen-Coding是一款快速编写HTML,CSS(或其他格式化语言)代码的编辑器插件,这个插件可以用缩写方式完成大量重复的编码工作,是web前端从业者的利器. zen-Coding插件支持多种编辑器 ...

  2. (转)Windows重启延迟删除,重命名技术原理

    所谓重启延迟删除技术,就是在操作系统启动前删除或者替换文件! 说起重启延迟删除,大家可能都很陌生,但是实际上,该功能已经被各种软件所采用:如安装Windows 补丁程序(如:HotFix.Servic ...

  3. <转>java编译问题:使用了未经检查或不安全的操作

    使用了未经检查或不安全的操作 在本人用editplus写java文件时碰到的问题.      源代码 import java.util.*; class collection{ public stat ...

  4. 4.PHP 教程_PHP 变量

    PHP 变量 变量是用于存储信息的"容器": <?php $x = 5; $y = 6; $z = $x + $y; echo $z; ?> 与代数相似 x=5 y=6 ...

  5. java 类排序

    参考文档:Java排序: Comparator vs Comparable 入门 java类经常面临排序问题,据我所知:java提供comparable和comparator两种比较方式: 1. co ...

  6. javaScript中有关正则表达式的用法总结

    js中处理正则表达式的类:RegExp 用法: var reg=new RegExp("express"); 或者: var reg=/express/; js中常用的6个方法: ...

  7. 射频识别技术漫谈(19)——Desfire的3次握手认证和段密码生成

    3次握手认证并生成临时的通讯密钥在通讯技术中的应用非常普遍,Mifare Desfire也使用了这种成熟的认证加密方法.Desfire在卡片数据传输前使用DES或3DES进行3次握手认证,认证成功一方 ...

  8. Qt 继承QWidget setstylesheet解决

    void myMainWidget::paintEvent(QPaintEvent * e) { QStyleOption opt; opt.init(this); QPainter p(this); ...

  9. 在GridView中实现全选反选的例子

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GridView控件.asp ...

  10. 《Java4Android视频教程》学习笔记(一)

    此为个人的学习笔记,所以不具备太强的学习性,若有错误请谅解,如果能指出我的错误,我将万分感谢~ 一:java历史 java诞生 前身:Oak->java 曾经的名字C++(++--) 原意是在C ...