iOS 数据持久化-- FMDB

一、简介

    1.什么是FMDB

  FMDB是iOS平台的SQLite数据库框架

  FMDB以OC的方式封装了SQLite的C语言API

 

  2.FMDB的优点

  使用起来更加面向对象,省去了很多麻烦、冗余的C语言代码

  对比苹果自带的Core Data框架,更加轻量级和灵活

  提供了多线程安全的数据库操作方法,有效地防止数据混乱

  

  3.FMDB的github地址

  https://github.com/ccgus/fmdb

 二、核心类

  FMDB主要的三个类:

  (1)FMDatabase

    一个FMDatabase对象就代表一个单独的SQLite数据库

    用来执行SQL语句

 

  (2)FMResultSet

    使用FMDatabase执行查询后的结果集

 

  (3)FMDatabaseQueue

    用于在多线程中执行多个查询或更新,它是线程安全的

 

三、打开数据库

通过指定SQLite数据库文件路径来创建FMDatabase对象

FMDatabase *db = [FMDatabase databaseWithPath:path];

if (![db open]) {

    NSLog(@"数据库打开失败!");

}

 

文件路径有三种情况

(1)具体文件路径

  如果不存在会自动创建

 

(2)空字符串@""

  会在临时目录创建一个空的数据库

  当FMDatabase连接关闭时,数据库文件也被删除

 

(3)nil

  会创建一个内存中临时数据库,当FMDatabase连接关闭时,数据库会被销毁

 

四、执行更新

在FMDB中,除查询以外的所有操作,都称为“更新”

create、drop、insert、update、delete等

 

使用executeUpdate:方法执行更新

- (BOOL)executeUpdate:(NSString*)sql, ...

- (BOOL)executeUpdateWithFormat:(NSString*)format, ...

- (BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray *)arguments

 

示例

[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

 

示例

// 查询数据

FMResultSet *rs = [db executeQuery:@"SELECT * FROM t_student"];

 

// 遍历结果集

while ([rs next]) {

    NSString *name = [rs stringForColumn:@"name"];

    int age = [rs intForColumn:@"age"];

    double score = [rs doubleForColumn:@"score"];

}

转载于:https://www.cnblogs.com/huadeng/p/7081372.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456137.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习】交叉验证筛选参数K值和weight

交叉验证 导包 import numpy as npfrom sklearn.neighbors import KNeighborsClassifierfrom sklearn import datasets#model_selection :模型选择 # cross_val_score: 交叉 ,validation:验证(测试) #交叉验证 from s…

jqGrid列的统计

$("#List").jqGrid({ url: "${pageContext.request.contextPath}/cbfx/getCbhzList.do", datatype: "json", mtype: GET, colNames:["成本类别","费用","去年同期费用","备注"], colMod…

手机只能签荣耀!最忠诚代言人胡歌喊你去天猫超品日

在你心中,男神胡歌是什么样子?“御剑乘风来,除魔天地间。”也许是《仙剑奇侠传》里飞扬跋扈、青春不羁的侠客李逍遥。“遍识天下英雄路,俯首江左有梅郎。”也许是《琅铘榜》中才智冠天下,远在江湖却名动帝辇的麒麟才子…

欧式距离与曼哈顿距离

欧式距离,其实就是应用勾股定理计算两个点的直线距离 二维空间的公式 其中, 为点与点之间的欧氏距离;为点到原点的欧氏距离。 三维空间的公式 n维空间的公式 曼哈顿距离,就是表示两个点在标准坐标系上的绝对轴距之和&#xff1a…

在maven pom.xml中加载不同的properties ,如localhost 和 dev master等jdbc.properties 中的链接不一样...

【参考】:maven pom.xml加载不同properties配置[转] 首先 看看效果: 点开我们项目中的Maven projects 后,会发现右侧 我们profile有个可勾选选项。默认勾选localhost。localhost对应项目启动后,会加载配置左侧localhost文件夹下面…

4.8-全栈Java笔记:包机制

包机制是java中管理类的重要手段。 开发中,我们会遇到大量同名的类,通过包我们很容易对解决类重名的问题,也可以实现对类的有效管理。 包对于类,相当于,文件夹对于文件的作用。package我们通过package实现对类的管理&a…

python安装以及版本检测

Windows 安装 Python 3 目前Python有两个大版本,分别是 2.X 和 3.X ,我们的教程基于最新版本 3.6.1 首先我们需要获取Python的安装包,可以从官网获取,如果你因为没有VPN工具而无法访问官网的话,我已经将它放在网盘了&…

【机器学习】梯度下降原理

import numpy as np import matplotlib.pyplot as plt %matplotlib inlinef lambda x :(x-3)**22.5*x-7.5 f2 lambda x :-(x-3)**22.5*x-7.5求解导数 导数为0 取最小值 x np.linspace(-2,5,100) y f(x) plt.plot(x,y)梯度下降求最小值 #导数函数 d lambda x:2*(x-3)*12.…

C语言的面向对象设计-对X264/FFMPEG架构探讨

本文贡献给ZSVC开源社区(https://sourceforge.net/projects/zsvc/),他们是来自于中国各高校的年轻学子,是满怀激情与梦想的人,他们将用自己的勤劳与智慧在世界开源软件领域为中国留下脚步,该社区提供大量视…

linux gtest安装

1. 安装cmake, 具体步骤这里不详说。 2. 下载源码:https://codeload.github.com/google/googletest/zip/release-1.8.0 3. 解压源码:unzip googletest-release-1.8.0.zip 4. 进入源码目录:cd googletest-release-1.8.0 5. 创建并进入目录buil…

基于物联网的智能垃圾桶设计

前言 目前我国各城市包括首都正在深入开展争创国家卫生城市活动,这是全国爱国卫生运动委员会办公室评选命名的国家级卫生优秀城市的最高荣誉,是一个城市综合素质的重要标志。沈阳市正在深入开展创建国家卫生城市和建设国家健康城市(以下简称“双城双创”…

学习实践 - 收藏集 - 掘金

2道面试题:输入URL按回车&HTTP2 - 掘金通过几轮面试,我发现真正那种问答的技术面,写一堆项目真不如去刷技术文章作用大,因此刷了一段时间的博客和掘金,整理下曾经被问到的2道面试题 从浏览器输入URL按回车到页面显…

【机器学习】自己手写实现线性回归,梯度下降 原理

导包 import numpy as npimport matplotlib.pyplot as plt %matplotlib inlinefrom sklearn.linear_model import LinearRegression创建数据 X np.linspace(2,10,20).reshape(-1,1)# f(x) wx b y np.random.randint(1,6,size 1)*X np.random.randint(-5,5,size 1)# 噪…

跨站的艺术-XSS Fuzzing 的技巧

作者 | 张祖优(Fooying) 腾讯云 云鼎实验室 对于XSS的漏洞挖掘过程,其实就是一个使用Payload不断测试和调整再测试的过程,这个过程我们把它叫做Fuzzing;同样是Fuzzing,有些人挖洞比较高效,有些人却不那么容易挖出漏洞…

H.264/AVC视频压缩编码标准的新进展

H .264/AVC是由ISO/IEC与ITU-T组成的联合视频组(JVT)制定的新一代视频压缩编码标准,于2003年5月完成制订。相对于先前的标准,H.264/AVC无论在压缩效率、还是在网络适应性方面都有明显的提高,因此,业界普遍预测其将在未来的视频应用…

python注释及语句分类

注释 注释就是:注解,解释。 主要用于在代码中给代码标识出相关的文字提示(提高代码的可读性) 或 调试程序。Python中注释分为两类: 1.单行注释 : 单行注释以 # 号开头,在当前行内,# 号后面的内容就是注释…

【机器学习】回归误差:MSE、RMSE、MAE、R2、Adjusted R2 +方差、协方差、标准差(标准偏差/均方差)、均方误差、均方根误差(标准误差)、均方根解释

我们通常采用MSE、RMSE、MAE、R2来评价回归预测算法。 1、均方误差:MSE(Mean Squared Error) 其中,为测试集上真实值-预测值。 def rms(y_test, y): return sp.mean((y_test - y) ** 2) 2、均方根误差:RMSE&#xff…

大院大所合作对接会7天倒计时!亮点抢先看

为什么80%的码农都做不了架构师?>>> 推动产业特色发展,提升企业自主创新能力,加快成果转化落地,继江苏发展大会之后,围绕“聚力创新”,7月5日-6日,中国江苏大院大所合作对接会暨第六…

通过取父级for循环的i来理解闭包,iife,匿名函数

在使用for循环的时候,假如需要在循环体中添加一个匿名函数处理其他的事情,那么,在这个匿名函数内,如果需要用到对应的i,因为闭包的缘故,循环体循环结束后才返回i,所以i最终为最后一次的数值。闭…

H.264将普及 视频编码讲坛之H.264前世今生

随着HDTV等高清资源的兴起,H.264这个规范频频出现在我们眼前,HD-DVD和蓝光DVD均计划采用这一标准进行节目制作。而且自2005年下半年以来,无论是NVIDIA还是ATI都把支持H.264硬件解码加速作为自己最值得夸耀的视频技术。而数码播放器领域也吹来…