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 ...
随机推荐
- 利用开源程序(ImageMagick+tesseract-ocr)实现图像验证码识别
--------------------------------------------------低调的分割线-------------------------------------------- ...
- UIWebView显示乱码问题
今天有人问Swift中UIWebView加载页面出来的是乱码,问知道怎么解决么? OC我知道肯定不会有乱码问题,Swift就不知道了,因为没有试过.....于是...我自己动手试试啦... OC和Sw ...
- Python3实现最小堆建堆算法
今天看Python CookBook中关于“求list中最大(最小)的N个元素”的内容,介绍了直接使用python的heapq模块的nlargest和nsmallest函数的解决方式,记得学习数据结构 ...
- Git基础知识与常用命令
一:相关概念: 1:工作区(Working Directory): 就是你在电脑里能看到的目录 2:版本库(Repository): 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库. ...
- C++基础-02
函数重载 - 函数重载依据参数列表,而不依据返回类型 - 重载函数匹配规则: 精确匹配,不需要类型转换,但可以数组名到指针.函数名到指针和T到const T 提升匹配,bool.short.char到 ...
- SQL三大范式三个例子搞定
第一范式(1NF) (必须有主键,列不可分) 数据库表中的任何字段都是单一属性的,不可再分 create table aa(id int,NameAge varchar(100)) insert aa ...
- Gradle笔记系列(一)
1.Gradle概述 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的 ...
- 【随笔】Photoshop简单切图
一.首先准备一张需要切割的图: 二.打开Photoshop,在ps里打开这张图片: 三.在界面的左边选择切片工具: 四.根据需要,鼠标点住上方和左边的标尺拖动,给图片加上分割辅助线: 五.用切片工具点 ...
- Java 标识符、数据类型、运算符
一.标识符 1.组成 首字母(字母,下划线,﹩)+其余部分(数字,字母,下划线,﹩) 2.命名规范 ①由大小写字母.下划线.数字.﹩ ②数字不能开头 ③标识符长度没有限制 ④标识符不能是关键字和保留字 ...
- $anchorScroll和$cache
1.$achorScroll服务---用于描点跳转 $scope.change = function(id){ $location.hash(id); $anchorScroll(); }; 只要给l ...