先引入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的简单使用的更多相关文章

  1. iOS进阶指南试读之UI篇

    iOS进阶指南试读之UI篇 UI篇 UI是一个iOS开发工程师的基本功.怎么说?UI本质上就是你调用苹果提供给你的API来完成设计师的设计.所以,想提升UI的功力也很简单,没事就看看UIKit里的各个 ...

  2. iOS进阶_地图上定位的标志——大头针

    一.添加大头针 地图使用的框架是MapKit 大头针走的是MKAnnotation协议 /* 注意:因为是满足协议MKAnnotation,所以没有MKAnnotation的系统大头针类,必须自定义大 ...

  3. iOS开发网络篇—简单介绍ASI框架的使用

    iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大 ...

  4. iOS开发UI篇—简单的浏览器查看程序

    iOS开发UI篇—简单的浏览器查看程序 一.程序实现要求 1.要求 2. 界面分析 (1) 需要读取或修改属性的控件需要设置属性 序号标签 图片 图片描述 左边按钮 右边按钮 (2) 需要监听响应事件 ...

  5. iOS开发UI篇—简单介绍静态单元格的使用

    iOS开发UI篇—简单介绍静态单元格的使用 一.实现效果与说明 说明:观察上面的展示效果,可以发现整个界面是由一个tableview来展示的,上面的数据都是固定的,且几乎不会改变. 要完成上面的效果, ...

  6. iOS开发Swift篇—简单介绍

    iOS开发Swift篇—简单介绍 一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objective-C ...

  7. 李洪强iOS开发之- 实现简单的弹窗

     李洪强iOS开发之- 实现简单的弹窗 实现的效果:  112222222222223333333333333333

  8. iOS开发之WKWebView简单使用

    iOS开发之WKWebView简单使用   iOS开发之 WKWebVeiw使用 想用UIWebVeiw做的,但是突然想起来在iOS8中出了一个新的WKWebView,算是UIWebVeiw的升级版. ...

  9. iOS CoreImage之滤镜简单使用

    代码地址如下:http://www.demodashi.com/demo/11605.html 老骥伏枥,志在千里 前记 最近一直在研究图像处理方面,既上一篇iOS Quart2D绘图之UIImage ...

随机推荐

  1. MySQL中auto_increment的基本特性

    创建数据表时,经常会出现auto_increment这个词,下面就来了解一下它吧. MySQL的中AUTO_INCREMENT类型的属性用于为一个表中记录自动生成ID功能,可在一定程度上代替Oracl ...

  2. <?xml version="1.0" encoding="UTF-8"?> 的作用?

    version="1.0" 声明用的xml版本是1.0 encoding="UTF-8" 声明用xml传输数据的时候的字符编码,假如文档里面有中文,编码方式不是 ...

  3. Ansible学习笔记

    一.Ansible简介 Ansible是一种agentless(基于ssh),可实现批量配置.命令执行和控制,基于Python实现的自动化运维工具. 其特性有: ①模块化:通过调用相关模块,完成指定任 ...

  4. 微信企业号-JS-SDK图像接口

    使用JS-SDK需要进行四步  主要是步骤二和步骤三,步骤二需要配置,步骤三具体使用相关接口,这里以使用图像接口为例 php页面代码主要用来完成步骤二,也就是配置接口 public function ...

  5. eclipse项目自动发布到tomcat目录,缺文件。

    eclipse项目自动发布到tomcat目录,缺文件. 解决方案: 项目--Properties-->Deployment Assembly-->Add--> Folder Add- ...

  6. jQuery与Ajax的应用——《锋利的jQuery》(第2版)读书笔记3

    第6章 jQuery与Ajax的应用 jQuery对Ajax操作进行了封装,在jQuery中$.ajax()方法属于最底层的方法,第2层是load().$.get()和$.post()方法,第3层是$ ...

  7. 关闭Win10自带的 Windows Defender

    1.按下Win+R,输入gpedit.msc 2.进入组策略,选择计算机配置>管理模板>Windows 组件>Windows Defender 3.双击"关闭 Window ...

  8. [译]2016年深度学习的主要进展(译自:The Major Advancements in Deep Learning in 2016)

    译自:The Major Advancements in Deep Learning in 2016 建议阅读时间:10分钟 https://tryolabs.com/blog/2016/12/06/ ...

  9. 接入百度语音SDK的步骤

    1.导入依赖库 SystemConfiguration.framework AudioToolbox.framework UIkit.framework AVFoundation.framework ...

  10. ajax 请求如何解决乱码

    今天遇到一个问题,有关ajax 请求中传输中文,遇到乱码的问题. 如下代码: function UpdateFolderInfoByCustId(folderId, folderName, custI ...