FMDB 数据库简单用法
来源:互联网 发布:javascript dom是什么 编辑:程序博客网 时间:2024/05/25 23:57
Model:
#import <Foundation/Foundation.h>@interface Player : NSObject@property(nonatomic,assign) int playerId;@property(nonatomic,strong) NSString *playerName;@property(nonatomic,strong) NSString *team;@end
#import "Player.h"@implementation Player- (NSString *)description{ return [NSString stringWithFormat:@"id->%d-----球员名称->%@---球队名称-->%@",self.playerId,self.playerName,self.team];}@end
#import <Foundation/Foundation.h>#import "FMDatabase.h"#import "FMResultSet.h"#import "FMDatabaseQueue.h"@interface DataManager : NSObject// 一个单一的SQLite数据库,用于执行SQL语句。@property(nonatomic,strong) FMDatabase *dataBase;// 执行查询一个FMDatabase结果集@property(nonatomic,strong) FMResultSet *result;// 在多个线程来执行查询和更新时会使用这个类。@property(nonatomic,strong) FMDatabaseQueue *queue;+ (DataManager *)sharedDataManager;@end
#import "DataManager.h"@implementation DataManager+ (DataManager *)sharedDataManager{ static DataManager *dataManager = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); NSString *path = [paths objectAtIndex:0]; NSString *dataPath = [path stringByAppendingPathComponent:@"Player.db"]; NSLog(@"%@",dataPath); FMDatabase *dataBase = [FMDatabase databaseWithPath:dataPath]; NSString *sql = @"create table if not exists player(id integer primary key autoincrement,playerName text,team text)"; if ([dataBase open]) { [dataBase setShouldCacheStatements:YES]; [dataBase executeUpdate:sql]; }else{ NSLog(@"数据库创建失败"); } dataManager = [[DataManager alloc] init]; dataManager.dataBase = dataBase; }); return dataManager;}@end
#import <Foundation/Foundation.h>#import "Player.h"#import "FMDatabase.h"@interface PlayerDao : NSObject@property(nonatomic,strong) FMDatabase *db;+ (PlayerDao *) sharedIntance;- (BOOL) addPlayer:(Player *)player;- (BOOL) delPlayer:(Player *)player;- (BOOL) findPlayer;- (BOOL) updatePlayer:(Player *)player;@end
#import "PlayerDao.h"#import "DataManager.h"#define TABLE @"player"#define PLAYER_NAME @"playerName"#define PLAYER_TEAM @"team"#define PLAYER_ID @"id";//需要通过反射形式, 对表结构进行对象化处理不需要自己写太多的 列 这样的名称。 反射处理@implementation PlayerDao- (id)init{ self = [super init]; if (self) { self.db = [DataManager sharedDataManager].dataBase; } return self;}+ (PlayerDao *) sharedIntance{ static PlayerDao *playDao; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ playDao = [[PlayerDao alloc] init]; }); return playDao;}- (BOOL) addPlayer:(Player *)player{ bool flag; NSString *sql = [NSString stringWithFormat:@"insert into %@('%@','%@') values ('%@','%@')",TABLE,PLAYER_NAME,PLAYER_TEAM,player.playerName,player.team]; if ([self.db open]) { flag = [self.db executeUpdate:sql]; } if (flag) { NSLog(@"数据插入成功!"); } [self.db close]; return flag;}- (BOOL) delPlayer:(Player *)player{ bool flag; NSString *sql = [NSString stringWithFormat:@"delete from %@ where %@ = %d" ,TABLE,@"id",player.playerId]; if ([self.db open]) { flag = [self.db executeUpdate:sql]; } if (flag) { NSLog(@"删除成功!"); } [self.db close]; return flag;}- (BOOL) findPlayer{ NSMutableArray *array = [[NSMutableArray alloc] init]; Player *player = nil; bool flag; NSString *sql = [NSString stringWithFormat:@"select * from %@",TABLE]; if ([self.db open]) { FMResultSet *result = [self.db executeQuery:sql]; while ([result next]) { int playerId = [result intForColumn:@"id"]; NSString *playerName = [result stringForColumn:PLAYER_NAME]; NSString *playerTeam = [result stringForColumn:PLAYER_TEAM]; player = [[Player alloc] init]; player.playerName = playerName; player.team = playerTeam; player.playerId = playerId; [array addObject:player]; } for (Player *player in array) { NSLog(@"查询数据结果:%@",player); } } [self.db close]; return flag; }- (BOOL) updatePlayer:(Player *)player{ bool flag; NSString *sql = [NSString stringWithFormat:@"update %@ set %@ = '%@' where %@ = '%@' ", TABLE,PLAYER_TEAM,player.team,PLAYER_NAME,player.playerName]; if ([self.db open]) { flag = [self.db executeUpdate:sql]; } if (flag) { NSLog(@"修改成功!"); [self.db close]; } return flag;}@end
Controller:
#import "ViewController.h"#import "PlayerDao.h"#import "Player.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad];}- (IBAction)add:(id)sender { PlayerDao *playDao = [PlayerDao sharedIntance]; NSLog(@"%@",playDao); Player *player = [[Player alloc] init]; player.playerName = @"詹姆斯"; player.team = @"东部"; [playDao addPlayer:player];}- (IBAction)del:(id)sender { PlayerDao *playDao = [PlayerDao sharedIntance]; Player *playe = [[Player alloc] init]; playe.playerId = 10; [playDao delPlayer:playe]; }- (IBAction)find:(id)sender { PlayerDao *playDao = [PlayerDao sharedIntance]; [playDao findPlayer]; }- (IBAction)uodate:(id)sender { PlayerDao *playDao = [PlayerDao sharedIntance]; Player *playe = [[Player alloc] init]; playe.playerName = @"詹姆斯"; playe.team = @"西部"; [playDao updatePlayer:playe]; NSLog(@"%@",playDao);}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning];}@end
一个表对应一个dao这种形式出来。 FMDB 还是更多的是以jdbc的形式来处理表。 需要打开,关闭这样的处理。 看是否能进行通过实体和表进行来反射出,这种默认的设置太麻烦,后期看改动。
0 0
- FMDB 数据库简单用法
- FMDB 数据库简单操作
- fmdb 数据库简单使用
- FMDB数据库简单使用
- 数据库-FMDB简单实用
- FMDB数据库简单应用
- 一个FMDB数据库简单应用
- Sqlite 数据库、FMDB 简单使用
- fmdb数据库的简单使用
- iOS开发—数据库FMDB简单介绍
- FMDB用法
- FMDB 用法
- fmdb数据库
- FMDB数据库
- FMDB数据库
- 数据库fmdb
- FMDB数据库
- ios关于数据库第三方框架FMDB进阶用法
- 远程连接不上vmware
- iOS Location Service
- Struts2 过滤 xss攻击 的一种解决方案
- 多人协作
- android Java String API
- FMDB 数据库简单用法
- arean.c
- jQuery入门学习笔记----第一章 jQuery开发入门
- 【bzoj4145】[AMPPZ2014]The Prices
- Javascript跨域和Ajax跨域解决方案
- C#定时器
- 创建标签
- Connect
- backbone.js选型使用分析