- 前言
- 需求描述
- 开发测试环境
- FMDB介绍
- 创建工程
一、前言
上一章介绍了如何开发一个IOS应用的入门案例教程:
本章主要将介绍如何使用sqlite,来进行本地持久化存储数据。
二、需求描述
在游戏开始一段时间后,我们需要存储角色的基础信息,以便我休息之后继续进行上次的旅途。
三、开发环境介绍
OS X EI Captian:10.11.4
Xcode: 7.3
ios:9.3
机型:iphone 6s/iphone 6s plus
四、FMDB介绍
iOS中的数据持久化方式,基本上有以下四种:
1. 属性列表
2. 对象归档
3. SQLite3
4. Core Data
本文主要介绍如何使用“SQLite3” 持久化方式。
SQLite:是一个开源的嵌入式关系数据库,它在2000年由D. Richard Hipp发布,它的减少应用程序管理数据的开销,
SQLite可移植性好,很容易使用,很小,高效而且可靠。
参考地址:http://www.sqlite.org/
FMDB:iOS、macOS开源的第三方库对SQLite的操作进行了封装。
参考地址:https://github.com/ccgus/fmdb.git
五、创建工程
Xcode 英文版:
1.“Create a new Xcode project”
2.“Choose a template for your new project”> iOS > Application > Single View Application
3. “Choose options for your new project”
Bundle Identifier:cn.oshine.ios.Lesson02,
Language : Objective-C ,
Devices: iPhone ,
Use Core Data: No,
include Unit Tests: No,
include UI Tests: No
4. "Select Folder To Create"
下载FMDB,FMDB的目录结构
把fmdb.xcodeproj拖动到工作区中。
Lesson02 TARGETS :
Build Pharses:
Target Dependencies > FMDB iOS(fmdb)
Link Binary With Libraries > libsqlite3.0.tbd
Link Binary With Libraries > libFMDB-iOS.a
引入头文件:
#import <Foundation/Foundation.h>
#import "fmdb/FMDB.h"
#import <sqlite3.h>
创建数据库:
FMDatabase *db = [FMDatabase databaseWithPath:@"/tmp/tmp.db"];
if (![db open]) {
NSLog(@"OPEN FAIL");
return;
}
关闭数据库:
创建表:
[db executeUpdate:@"CREATE TABLE IF NOT EXISTS profile(name text,val text)"];
插入记录:
[db beginTransaction];
[db executeUpdate:@"INSERT INTO profile(name,val) VALUES (?,?)",@"HP",@"600"];
[db executeUpdate:@"INSERT INTO profile(name,val) VALUES (?,?)",@"MP",@"250"];
[db executeUpdate:@"INSERT INTO profile(name,val) VALUES (?,?)",@"攻击",@"70"];
[db executeUpdate:@"INSERT INTO profile(name,val) VALUES (?,?)",@"防御",@"1"];
[db executeUpdate:@"INSERT INTO profile(name,val) VALUES (?,?)",@"攻速",@"0.3"];
[db executeUpdate:@"INSERT INTO profile(name,val) VALUES (?,?)",@"移速",@"320"];
[db commit];
读取记录:
FMDatabase *db = [FMDatabase databaseWithPath:@"/tmp/tmp.db"];
if (![db open]) {
NSLog(@"OPEN FAIL");
return;
}
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
FMResultSet *rs = [db executeQuery:@"SELECT name,val FROM profile"];
while ([rs next]) {
[dictionary setObject:[rs stringForColumn:@"val"] forKey:[rs stringForColumn:@"name"]];
}
[rs close];
[db close];
案例界面:
案例代码:
运行结果:
ViewController