Sqlite/ FMDB
Sqlite
1. Sqlite数据库
> 数据库? 按数据结构来组织,存储和管理数据的仓库。
> 关系型数据库:使用二维表及其之间的联系组织成一个数据组织。
关系:可以理解为一张二维表,每个关系都有个关系名,通常说的表名。
元组:可以理解为二维表中的一行,在数据库中成为记录
属性: 二维表中的一列,成为字段
关键字: 一组可以唯一标识元组(记录)的属性,数据库中成为主键,由一个或多个列组成。
关系模式: 对关系(表)的描述,格式:表名(字段1,字段2,…),即表结构
> Sqlite 数据库是轻量级的关系型数据库,iOS 和Android都是用的Sqlite.
(其他类型的数据库:MySQL, SQLServer,Oracle…)
> Sqlite 表中支持的数据类型:
NULL-空值
INTEGER- 有符号整数类型
REAL - 浮点数类型
TEXT - 字符串
BLOB - 二进制数据
2. SQL :数据库语言,结构化查询语言(Structured Query Language),用于操作数据库。
> 常用查询语句:
1).建表语句
create table if not exists TableName(Field1 DataType, Field2 Data, ...)
2).插入语句,增
insert into TableName(Field1, Field2, ...) values(value1, value2, ...)
3).更新数据,改
update TableName set Field1=Value1, Field2=Value2 where Field1 = Value1
4).删除数据,删
delete from TableName
5).查询语句,查
select Field from TableName // 查询指定字段数据
select * from TableName limit 10 // 查询所有数据并且取最后10条数据
select * from TableName order by Field asc // 查询结果根据哪个字段来排排序(asc升序/desc降序)
select count (*) from TableName // 查询数据的数量
6).条件判断
select * from TableName where Field=Value // 等于
where Field>Value // 大于
where Field<Value // 小于
where Field<>Value // 不等于
where Field in ('Value1', 'Value2', 'Value3') // 在集合中的⼀个
where Field between Value1 and Value2 // 在两个值之间
3. iOS中直接操作SQLite的接口是C语言的,在开发中可自己封装,但需要调用一些c函数,一般情况下使用封装好的第三方库操作管理数据库。
使用SQLite,需要导入libsqlite3
iOS中用到的四种方式: 属性列表,对象归档, sqlite数据库存储,基于sqlite的封装的系统框架CoreData。
FMDB
1. 官方地址:https://github.com/ccgus/fmdb
封装了Sqlite的数据库操作,需要导入 libsqlite3
> 使用FMDB
-将该库工程目录下 fmdb 目录拖曳添加到自己的工程下;
-导入libsqlite3
> 封装 FMDB的操作(实际开发时一般要封装下)
// 在封装类里引入
#import "FMDB.h"
// 创建数据库(已存在则不创建)
[FMDatabase databaseWithPath:] // 注意数据库创建的文件是要保存在应用程序沙盒目录下
// 打开/关闭数据库
[db open] / [db close] // 创建完毕后要执行open方法,否则数据库无法创建
// 执行sql 语句
[db executeUpdate:] // 非查询语句
[db executeQuery:] // 查询语句
*多语句执行
[db executeStatements:]
// 查询结果集
FMResultSet *rs = [_dataBase executeQuery:];
// 循环读取结果集中的记录
[rs next]
// 读取记录中的字段值
intForColumn:
- longForColumn:
- longLongIntForColumn:
- boolForColumn:
- doubleForColumn:
- stringForColumn: // 最常用,将读取的数据转换为字符串
Sqlite/ FMDB的更多相关文章
- 李洪强iOS面试总结之- FMDB
n什么是FMDB pFMDB是iOS平台的SQLite数据库框架 pFMDB以OC的方式封装了SQLite的C语言API p nFMDB的优点 p使用起来更加面向对象,省去了很多麻烦.冗余的C语言代码 ...
- ios资源
ios 资源 分类: ios开发2012-05-30 16:39 573人阅读 评论(0) 收藏 举报 ios文档calendar2010reference图像处理 学习过程当中查找到的资料,做一个记 ...
- IOS地址
IOS开发-你不可缺少的资源汇总-知识分享-转 如何用Facebook graphic api上传视频: http://developers.facebook.com/blog/post/532/ ...
- ios 学习路线总结
学习方法 面对有难度的功能,不要忙着拒绝,而是挑战一下,学习更多知识. 尽量独立解决问题,而不是在遇到问题的第一想法是找人. 多学习别人开源的第三方库,能够开源的库一定有值得学习的地方,多去看别的大神 ...
- (转)IOS 的一些资源汇总
UI界面类项目: Panoramagl —— 720全景展示 Panorama viewer library for iPhone, iPad and iPod touch MBProgressH ...
- iOS-----GitHub上比较齐全的iOS 工具和App
Github-iOS 工具 和 App 系统基础库 Category/Util sstoolkit 一套Category类型的库,附带很多自定义控件 功能不错- BFKit 又一套Ca ...
- (转) iphone开发资源汇总
如何用Facebook graphic api上传视频: http://developers.facebook.com/blog/post/532/ Keychain保存数据封装: https://g ...
- 李洪强经典面试题31- FMDB
n什么是FMDB pFMDB是iOS平台的SQLite数据库框架 pFMDB以OC的方式封装了SQLite的C语言API p nFMDB的优点 p使用起来更加面向对象,省去了很多麻烦.冗余的C语言代码 ...
- 从C#到Objective-C,循序渐进学习苹果开发(7)--使用FMDB对Sqlite数据库进行操作
本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验.本篇主要开始介绍基于XCod ...
随机推荐
- linq中将int类型转换为string类型,toString()报错
今天同事在调试程序的时候,报了一个不寻常的错误, “LINQ to Entities 不识别方法"System.String ToString()",因此该方法无法转换为存储表达式 ...
- JavaScript:关闭当前页面(微信、电脑)
WeixinJSBridge.call('closeWindow'); // 关闭微信浏览器 window.opener=null; window.open('','_self'); window.c ...
- POJ 1659 Frogs' Neighborhood (Havel定理构造图)
题意:根据图的度数列构造图 分析:该题可根据Havel定理来构造图.Havel定理对可图化的判定: 把序列排成不增序,即d1>=d2>=……>=dn,则d可简单图化当且仅当d’={d ...
- 关于Python字符编码encode和decode
(注:本文部分内容摘自互联网,由于作者水平有限,不足之处,还望留言指正.) 记得几天前,部门的一个小姑娘问我,怎么她Python打印出来的中文信息都乱码了?我走过去,略思一二,瞬间给她搞定,其实这是字 ...
- CAS单点登录的配置
先说单点登录是个啥? 单点登录主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个,无须多次登录. 配置的步骤如下: 1.生成安全证书 Cas serve ...
- GUI自动测试化工具 Ranorex Studio 使用介绍
之前用的VS自带的测试工具进行Winform的测试.但是有一个第三方的插件,没有被更好的支持. 提示消息: 测试方法 EnformentUITestProject.CodedUITest1.Coded ...
- nginx反向代理服务器端口问题
nginx可以很方便的配置成反向代理服务器 server { listen 80; server_name bothlog.com; location / { proxy_set_header H ...
- What's the difference between UTF-8 and UTF-8 without BOM?
https://stackoverflow.com/questions/2223882/whats-the-difference-between-utf-8-and-utf-8-without-bom ...
- LeetCode——Fizz Buzz
LeetCode--Fizz Buzz Question Write a program that outputs the string representation of numbers from ...
- Java基本数据类型与相应的封装类
基本数据类型 封装类 int Integer short Short float Float double Double long Long boolean Boolean b ...