iOS进阶_FMDB的简单使用
先引入FMDB第三方,点击查看方法
一、创建表
1.创建sql语句
NSString *createSql = @"create table if not exists t_student(id integer primary key autoincrement not null, name text not null, age integer not null, sex text no null)";
2.找到存储路径
NSString *document = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSLog(@"document = %@", document);
self.filePath = [document stringByAppendingPathComponent:@"student.sqlite"];
NSLog(@"filePath = %@", self.filePath);
3.使用路径初始化FMDB对象
self.dataBase = [FMDatabase databaseWithPath:self.filePath];
4.需要判断数据库打开的时候才进行执行语句
if ([self.dataBase open]) {
BOOL result = [self.dataBase executeUpdate:createSql];
if (result) {
NSLog(@"建表成功");
} else {
NSLog(@"建表失败");
}
}
5.关闭数据库
[self.dataBase close];
二、增删改查
都先打开数据库:[数据库 open];
设置对应的sql语句:NSString *sql = @"对应sql语句";
数据库走对应的方法,获得结果,FMDB中此结果为BOOL型,而不是普通数据中的int型。BOOL result = [数据库 executeUpdate:对应语句,(参数)];
对result结果进行判断,成功即输出成功,失败打印错误代码
if (result) {
NSLog(@"插入成功");
} else {
NSLog(@"插入失败,result = %d", result);
}
关闭数据库。
1.增:insert into t_student (name, age, sex) values (?, ?, ?)
增第二种方式,队列(优化方式):
//FMDB不支持多个线程同时操作,所以一般以串行的方式实现
[self.dataBase open]
//第一步:创建操作队列
FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:self.filePath];
//标识:记录是否操作成功
__block BOOL isSucceed = YES;
//第二步:把所需要做的事情打包放到操作队列里
[queue inTransaction:^(FMDatabase *db, BOOL *rollback) {
//串行队列
isSucceed = [db executeUpdate:@"insert into t_student (name, age, sex) values (?,?,?)", @"隔壁老王", @38, @"男"] && isSucceed;
isSucceed = [db executeUpdate:@"insert into t_student (name, age, sex) values (?,?,?)", @"赵符壹", @"438", @"男"] && isSucceed;
isSucceed = [db executeUpdate:@"insert into t_student (name, age, sex) values (?,?,?)", @"AJAR", @"18", @"男"] && isSucceed;
if (isSucceed) {
NSLog(@"添加多个成功");
} else { //如果有错误
//block返回的参数rollback进行处理(bool类型的指针)
*rollback = YES;
return ;
}
}];
[self.dataBase close];
2.删:delete from t_student where name = ?", @"aaa"
3.改:update t_student set name = ? where name = ?", @"bbb", @"ccc"
4.查:select * from t_student
//查询结果使用的类FMResultSet
FMResultSet *resultSet = [数据库 executeQuery:@"查询语句"];
iOS进阶_FMDB的简单使用的更多相关文章
- iOS进阶指南试读之UI篇
iOS进阶指南试读之UI篇 UI篇 UI是一个iOS开发工程师的基本功.怎么说?UI本质上就是你调用苹果提供给你的API来完成设计师的设计.所以,想提升UI的功力也很简单,没事就看看UIKit里的各个 ...
- iOS进阶_地图上定位的标志——大头针
一.添加大头针 地图使用的框架是MapKit 大头针走的是MKAnnotation协议 /* 注意:因为是满足协议MKAnnotation,所以没有MKAnnotation的系统大头针类,必须自定义大 ...
- iOS开发网络篇—简单介绍ASI框架的使用
iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大 ...
- iOS开发UI篇—简单的浏览器查看程序
iOS开发UI篇—简单的浏览器查看程序 一.程序实现要求 1.要求 2. 界面分析 (1) 需要读取或修改属性的控件需要设置属性 序号标签 图片 图片描述 左边按钮 右边按钮 (2) 需要监听响应事件 ...
- iOS开发UI篇—简单介绍静态单元格的使用
iOS开发UI篇—简单介绍静态单元格的使用 一.实现效果与说明 说明:观察上面的展示效果,可以发现整个界面是由一个tableview来展示的,上面的数据都是固定的,且几乎不会改变. 要完成上面的效果, ...
- iOS开发Swift篇—简单介绍
iOS开发Swift篇—简单介绍 一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objective-C ...
- 李洪强iOS开发之- 实现简单的弹窗
李洪强iOS开发之- 实现简单的弹窗 实现的效果: 112222222222223333333333333333
- iOS开发之WKWebView简单使用
iOS开发之WKWebView简单使用 iOS开发之 WKWebVeiw使用 想用UIWebVeiw做的,但是突然想起来在iOS8中出了一个新的WKWebView,算是UIWebVeiw的升级版. ...
- iOS CoreImage之滤镜简单使用
代码地址如下:http://www.demodashi.com/demo/11605.html 老骥伏枥,志在千里 前记 最近一直在研究图像处理方面,既上一篇iOS Quart2D绘图之UIImage ...
随机推荐
- spring 的aop proxy 代理
前些日子一朋友在需要在目标对象中进行自我调用,且需要实施相应的事务定义,且网上的一种通过BeanPostProcessor的解决方案是存在问题的.因此专门写此篇帖子分析why. 1.预备知识 aop概 ...
- UNIX:高级环境编程 - 第十五章 IPC:进程间通信
IPC(InterProcess Communication)进程间通信.为啥没有进程间通信,这是因为进程间都是同步的关系,不需要通信. 1.管道 1.1管道特点: (1)半双工的(即数据只能在一个方 ...
- Android版本4.0~7.0
Android 4.0 Ice Cream Sandwich(冰激凌三明治):2011年10月19日发布 版本主要更新如下:全新的UI:全新的Chrome Lite浏览器:截图功能:更强大的图片编辑功 ...
- ie,火狐,谷歌 select清除默认样式 设置新的样式
select { border: solid 1px #000; /*Chrome和Firefox里面的边框是不一样的,所以复写了一下*/ appearance:none; -moz-appearan ...
- ubuntu14.04 安装系统
p { margin-bottom: 0.1in; line-height: 120% } code.cjk { font-family: "Droid Sans Fallback" ...
- python autopep8
安装 使用pip install autopep8或easy_install 都可以. 使用 autopep8 -i -a 要检查的py文件路径 更多参数使用可以参考:https://github.c ...
- Loaders
Android3.0之后引入了加载器,支持轻松在Activity和Fragment中异步加载数据.加载器具有以下特点: 1.可用于任何Activity和Fragment 2.支持异步加载数据 3.监控 ...
- codeforces 446C DZY Loves Fibonacci Numbers 线段树
假如F[1] = a, F[2] = B, F[n] = F[n - 1] + F[n - 2]. 写成矩阵表示形式可以很快发现F[n] = f[n - 1] * b + f[n - 2] * a. ...
- android app上线后bug的处理
app上线后,后期维护显得尤为重要,今天给大家分享一下app上线后出现bug后的解决方法 1.继承Application类,重写onCreate方法 import java.io.File; impo ...
- JAVA可移植性广泛应用
一.JAVA作为一种编程语言:源代码可移植性 作为一种编程语言,JAVA提供了一种最简单同时也是人们最熟悉的可移植性–源代码移植.这意味着任意一个JAVA程序,不论它运行在何种CPU.操作系统或JAV ...