一、下载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