ios数据库FMDB
一、下载fmdb类库
二、添加libsqulite3.0.dylib
三、添加头文件#import "FMDB.h"
四、打开数据库
a、设置路径NSString *path = [[NSSearchPathForDirectoriesInDomainas(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"shops.sqlite"];
b、设置强引用属性 @property (nonatomic, strong) FMDatabase *db;
c、self.db = [FMDatabase databaseWithPath:path];//返回一个数据库对象
d、打开 [self.db open];
//两个重要语句
//executeQuery:查询数据
//executeUpdate:除查询数据以外的其他操作
五、创表
[self.db execureUpdate:@"CREATE TABLE IF NOT EXISTS t_shop (if integer PRIMARY KEY, name text NOT NULL, price real);"];
六、插入数据
NSString *name = [NSString stringWithFormat:@"手机-%d",i];
[self.db executeUpdateWithFormat:@"INSERT INTO t_shop(name, price) VALUES (%@, %d);",name,arc4random()%1000];
七、读取数据
a、得到结果集
FMResultSet *set = [self.db executeQuery:@"SELECT * FROM t_shop;"];
b、不断取出数据
while(set.next){
//获得当前所指向的数据
NSString *name = [set stringForColumn:@"name"];
double price =[set doubleForColumn:@"price"];
NSLog(@"%@ %f",name , price);
}
八、删除数据
[self.db executeUpdate:@"DELETE FROM t_SHOP WHERE price < 500;"];
九、封装数据库
a、不让控制器接触数据库,设置一个工具类ShopTool
b、设置数据模型Shop
c、在ShopTool中,将db设置成全局变量
static FMDatabase *_db;
b、初始化 +(void)initalize
.......
封装的ShopTool代码:
#import <Foundation/Foundation.h>
@class HMShop; @interface HMShopTool : NSObject
+ (NSArray *)shops;
+ (void)addShop:(HMShop *)shop;
@end #import "HMShopTool.h"
#import "FMDB.h"
#import "HMShop.h" @implementation HMShopTool static FMDatabase *_db; + (void)initialize
{
// 1.打开数据库
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"shops.sqlite"];
_db = [FMDatabase databaseWithPath:path];
[_db open]; // 2.创表
[_db executeUpdate:@"CREATE TABLE IF NOT EXISTS t_shop (id integer PRIMARY KEY, name text NOT NULL, price real);"];
} + (void)addShop:(HMShop *)shop
{
[_db executeUpdateWithFormat:@"INSERT INTO t_shop(name, price) VALUES (%@, %f);", shop.name, shop.price];
} + (NSArray *)shops
{// 得到结果集
FMResultSet *set = [_db executeQuery:@"SELECT * FROM t_shop;"]; // 不断往下取数据
NSMutableArray *shops = [NSMutableArray array];
while (set.next) {
// 获得当前所指向的数据
HMShop *shop = [[HMShop alloc] init];
shop.name = [set stringForColumn:@"name"];
shop.price = [set doubleForColumn:@"price"];
[shops addObject:shop];
}
return shops;
}
@end
控制器代码:
#import "HMViewController.h"
//#import "FMDB.h"
#import "HMShop.h"
#import "HMShopTool.h" @interface HMViewController ()
//@property (nonatomic, strong) FMDatabase *db;
@end @implementation HMViewController - (void)viewDidLoad
{
[super viewDidLoad]; // 1.打开数据库
// NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"shops.sqlite"];
// self.db = [FMDatabase databaseWithPath:path];
// [self.db open];
//
// // 2.创表
// [self.db executeUpdate:@"CREATE TABLE IF NOT EXISTS t_shop (id integer PRIMARY KEY, name text NOT NULL, price real);"];
// executeQuery:查询数据
// [self.db executeQuery:<#(NSString *), ...#>]; // executeUpdate:除查询数据以外的其他操作
// [self.db executeUpdate:<#(NSString *), ...#>];
} - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
// for (int i = 0; i<100; i++) {
// HMShop *shop = [[HMShop alloc] init];
// shop.name = [NSString stringWithFormat:@"枕头--%d", i];
// shop.price = arc4random() % 200;
// [HMShopTool addShop:shop];
// } NSArray *shops = [HMShopTool shops];
for (HMShop *shop in shops) {
NSLog(@"%@ %f", shop.name, shop.price);
} // [self.db executeUpdate:@"DELETE FROM t_shop WHERE price < 800;"];
//
// [self query];
}
shop.h模型代码:
#import <Foundation/Foundation.h> @interface HMShop : NSObject
@property (nonatomic, copy) NSString *name;
@property (nonatomic, assign) double price;
@end
ios数据库FMDB的更多相关文章
- IOS数据库FMDB增、删、改、查的使用【原创】
http://blog.it985.com/13588.html IOS数据库FMDB增.删.改.查的使用[原创] FMDB是一个XCODE的中一个轻量级的数据库,用于将网络资源存储在本地.所以,FM ...
- iOS本地存储-数据库(FMDB)
初识FMDB iOS中原声的SQLite API在进行数据存储的时候,需要使用C语言中的函数,操作比较麻烦,于是就出现了一系列将SQLite封装的库.本文讲解的FMDB就是其中的一个. FMDB PK ...
- ios开发FMDB导入SQLCipher加密数据库
转:http://www.2cto.com/kf/201407/315727.html [iOS]FMDB/SQLCipher数据库加解密,迁移
- iOS 数据库操作(使用FMDB)
iOS 数据库操作(使用FMDB) iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.Plausibl ...
- [iOS]数据库第三方框架FMDB详细讲解
[iOS]数据库第三方框架FMDB详细讲解 初识FMDB iOS中原生的SQLite API在进行数据存储的时候,需要使用C语言中的函数,操作比较麻烦.于是,就出现了一系列将SQLite API进行封 ...
- iOS开发 数据库FMDB
iOS开发 数据库FMDB 1.简介 需求作用: 如果需要保存大量的结构较为复杂的数据时候, 使用数据库, 例如交规考试项目 常用的数据库: (1)Microsoft SQL Server 2000 ...
- iOS——使用FMDB进行数据库操作(转载)
iOS 使用FMDB进行数据库操作 https://github.com/ccgus/fmdb [摘要]本文介绍iOS 使用FMDB进行数据库操作,并提供详细的示例代码供参考. FMDB 使用方法 A ...
- IOS数据库操作SQLite3使用详解(转)
iPhone中支持通过sqlite3来访问iPhone本地的数据库.具体使用方法如下1:添加开发包libsqlite3.0.dylib首先是设置项目文件,在项目中添加iPhone版的sqlite3的数 ...
- iOS数据库操作之coredata详细操作步骤
CHENYILONG Blog iOS数据库操作之coredata详细操作步骤 技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/ ...
随机推荐
- C/C++流程图生成器 C转流程图【worldsing笔记】
此版本仅供学习,请大家支持正版软件!! AutoFlowChart v3.1软件下载: http://url.cn/OUK17C 支持导出:word.visio.图片格式. 例如:main.c # ...
- Latex 中宽度的设置和理解
\textwidth, 文本区域的全部宽度 \columnwidth, 文本中一列的宽度,单栏或者多栏的情况下,值是不同的 但是,一旦\textwidth, \columnwidth, \linewi ...
- nginx+tomcat+redis负载均衡及session共享
概述 本文档是用来详细描述 nginx+tomcat+redis负载均衡实现session共享 所需软件及下载地址 软件名称 下载地址 功能说明 Nginx-v1.6.0 http://nginx.o ...
- .NET加密配置文件connectionStrings节点
具体的可以参考petshop源码程序. 加密前: <connectionStrings> <add name="SQLProfileConnString" con ...
- android自动化测试中hierarchyviewer和uiautomatorviewer获取控件信息的方式比对
http://blog.csdn.net/itfootball/article/details/21777835 http://blog.csdn.net/chenbang110/article/de ...
- [Javascript] Webpack Loaders, Source Maps, and ES6
Using ES6 To use ES6, we need loader. Modify webpack.config.js file: module.exports = { entry: './in ...
- mysql中删除表
有两种方式: 1.delete from table table_name; 2.truncate table table_name; 第一种中,清空表后,主键id会在原先的记录基础上继续增加,而第二 ...
- 进程关系之tcgetpgrp、tcsetpgrp和tcgetsid函数
需要有一种方法来通知内核哪一个进程组是前台进程组,这样,终端设备驱动程序就能了解将终端输入和终端产生的信号送到何处. #include <unistd.h> pid_t tcgetpgrp ...
- Java基础知识强化之网络编程笔记15:Android网络通信之 Android异步任务处理(AsyncTask使用)
AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的 ...
- hadoop学习记录(零)
这个博客开通快一年了,但是由于种种原因,始终没有能够养成定期更新的习惯. 最近完成了比赛的项目,向除了android开发以外再拓宽一下自己的技能树. 最近购买了<java8函数式编程>和& ...