iOS 数据库第三方FMDB的简单使用
一 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的简单使用的更多相关文章
- [iOS]数据库第三方框架FMDB详细讲解
[iOS]数据库第三方框架FMDB详细讲解 初识FMDB iOS中原生的SQLite API在进行数据存储的时候,需要使用C语言中的函数,操作比较麻烦.于是,就出现了一系列将SQLite API进行封 ...
- 第三方FMDB的简单使用
1,导入第三方头文件 #import "FMDB.h" //定义全局变量 @implementation InputInformationViewController { UITe ...
- iOS开发数据库篇—FMDB简单介绍
iOS开发数据库篇—FMDB简单介绍 一.简单说明 1.什么是FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API 2.FMDB的优点 使用起来 ...
- iOS 数据库操作(使用FMDB)
iOS 数据库操作(使用FMDB) iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.Plausibl ...
- IOS数据库FMDB增、删、改、查的使用【原创】
http://blog.it985.com/13588.html IOS数据库FMDB增.删.改.查的使用[原创] FMDB是一个XCODE的中一个轻量级的数据库,用于将网络资源存储在本地.所以,FM ...
- SQLite数据库框架--FMDB简单介绍
1.什么是FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API 2.FMDB的优点 使用起来更加面向对象,省去了很多麻烦.冗余的C语言代码 对比 ...
- iOS开发数据库篇—FMDB数据库队列
iOS开发数据库篇—FMDB数据库队列 一.代码示例 1.需要先导入FMDB框架和头文件,由于该框架依赖于libsqlite库,所以还应该导入该库. 2.代码如下: // // YYViewContr ...
- iOS中使用FMDB事务批量更新数据库
今天比较闲看到大家在群里讨论关于数据库操作的问题,其中谈到了"事务"这个词,坦白讲虽然作为计算机专业的学生,在上学的时候确实知道存储过程.触发器.事务等等这些名词的概念,但是由于毕 ...
- iOS开发中FMDB的使用
1.什在日常的开发中,我们需要用到离线缓存将数据信息存入数据库,在没有网络的时候进行加载,而我们IOS用的就是sqlite3数据库,用原生的sql我们也能实现,但是书写起来比较麻烦,尤其是其它语言转过 ...
随机推荐
- MD5随机散列加密算法
项目中需要在登录验证用户名.密码的时候对密码进行加密处理,由于是比较商业化的软件,所以安全方面还是必须要考虑的.而使用MD5随机散列加密算法使得密码加密后不可逆,很大程度上提升了安全性.废话不多说,看 ...
- 关于反射的一个小问题---.NetFrameWork版本不一样导致不同的系统的问题
背景: 近期项目中用到发射,本人的电脑上是安装了.NetFrameWork 4.5,然后用着发射蛮顺溜的,啪啪,三下五除二,项目完成了,然后提交测试了,测试的电脑是虚拟机上安装了xp系统,然后.Net ...
- Windows系统中使用WMI获取远程服务器的信息
使用WMI获取远程服务器的状态 我做的项目里边主要包含两个内容: (1)对发布在服务器上的服务(IIS服务.WCF服务)是否可以正常访问: (2)获取服务器上的部分指标:如CPU.内存.磁盘空间信息等 ...
- 如何将 MFC ActiveX 控件标记为安全,脚本和初始化
MSDN原文.ActiveX控件标记安全(可以不仅仅是MFC ActiveX) 概要 默认情况下,MFC ActiveX 控件未标记为对脚本编写是安全的和对初始化是安全的.控制运行在 Internet ...
- LNMP 基于域名的虚拟主机配置 (Centos5.6)
. . server { listen ; #listen [::]: default_server ipv6only=on; server_name www.blog.com; index inde ...
- ID卡学习笔记
前言: 我也来篇关于当时学习ID卡的笔记.前段时间小区装门禁.一个钮扣型的ID卡就要30块.非常黑心.因为其ID卡的成本也就是1块钱以下.因此我也加入到这方面的研究.用来模拟ID卡的T5557卡成本2 ...
- php命名空间及和autoload结合使用问题。
在讨论如何使用命名空间之前,必须了解 PHP 是如何知道要使用哪一个命名空间中的元素的.可以将 PHP 命名空间与文件系统作一个简单的类比.在文件系统中访问一个文件有三种方式: 相对文件名形式如foo ...
- 可以放在html代码中的自动跳转代码
可以放在html代码中的自动跳转代码 有3种方法可以实现html的页面跳转,1,refresh 2,onload事件中加入代码 3,js实现 1.<html><body> ...
- Windows Azure 存储的冗余存储选项和只读访问跨地域冗余存储
我们很高兴地宣布,现在我们使客户可以获得对数据更高的读取可用性.该预览功能称为"只读访问- 跨地域冗余存储(RA-GRS)",使客户可以在存储帐户主要区域无法读取数据时,通过跨 ...
- Android 关于调用系统内已安装的相机问题
Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent,1); 调用系统内已安 ...