iOS开发之
来源:互联网 发布:淘宝最新规则在哪里看 编辑:程序博客网 时间:2024/06/03 18:56
FMDB
下面使用的XLUserModel是自定义的model对象
.h文件的简单实现
@interface XLDataBase : NSObject+ (XLDataBase *)standardDB;// 插入一条数据- (BOOL)insertIntoDataBaseWithModel:(XLUserModel *)model;// 修改某一条数据- (BOOL)updateDataBaseWithModel:(XLUserModel *)model;// 删除某一条数据- (BOOL)deleteFromDataBaseByIdentifier:(NSString *)identifier;// 查询某一条数据是否存在- (XLUserModel *)queryFromDataBaseByIdentifier:(NSString *)identifier;// 清空当前数据库- (BOOL)deleteFromDataBase;// 查询所有数据- (NSMutableArray *)selectAllFromDataBase;// 获取数据库路径- (NSString *)dataBasePath;@end
.m文件的实现
@interface XLDataBase ()@property (nonatomic, strong) FMDatabase *fmdb;@property (nonatomic, strong) NSMutableArray *dataArray;@end@implementation XLDataBase// 初始化单例static XLDataBase *xldb = nil;+ (XLDataBase *)standardDB { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ xldb = [[XLDataBase alloc] init]; [xldb creatDataBase]; // 创建数据库 [xldb createTableInDataBase]; // 创建表 }); return xldb;}- (NSMutableArray *)dataArray { if (!_dataArray) { self.dataArray = [NSMutableArray arrayWithCapacity:1]; } return _dataArray;}// 创建数据库- (void)creatDataBase { self.fmdb = [FMDatabase databaseWithPath:[xldb dataBasePath]];}// 创建表- (void)createTableInDataBase { // 打开数据库 if (![xldb.fmdb open]) { return; } // 操作数据库 -- 创建表 [xldb.fmdb executeUpdate:@"create table if not exists friends(item_id integer primary key autoincrement, friend_id text, group_id text, reamrk text, session_id text, user_id text, userName text)"]; // 关闭数据库 [xldb.fmdb close];}// 增 -- 插入- (BOOL)insertIntoDataBaseWithModel:(XLUserModel *)model { // 打开数据库 if (![xldb.fmdb open]) { return NO; } // 操作数据库 -- 插入数据库 BOOL isSuccess = [xldb.fmdb executeUpdate:@"insert into friends(friend_id, group_id, reamrk, session_id, user_id, userName) values(?, ?, ?, ?, ?, ?)", model.friendId, model.groupId, model.remark, model.sessionId, model.userId, model.userName]; /** 因为主键item_id是由数据库自动生成的, 所以在插入数据之前, model对象中没有item_id, 所以当数据库把item_id生成好之后, 需要同步给model对象 */ model.item_id =xldb.fmdb.lastInsertRowId; // 关闭数据库 [xldb.fmdb close]; return isSuccess;}// 删- (BOOL)deleteFromDataBaseByIdentifier:(NSString *)identifier { // 打开数据库 if (![xldb.fmdb open]) { return NO; } // 操作数据库 -- 删除一条数据 BOOL isSuccess = [xldb.fmdb executeUpdate:@"delete from friends where friend_id = ?", identifier]; // 关闭数据库 [xldb.fmdb close]; return isSuccess;}// 查询某一条数据- (XLUserModel *)queryFromDataBaseByIdentifier:(NSString *)identifier { // 打开数据库 if (![xldb.fmdb open]) { return nil; } // 操作数据库 -- 查询一条数据 FMResultSet *result = [xldb.fmdb executeQuery:@"select * from friends where friend_id = ?", identifier]; XLUserModel *model = nil; while ([result next]) { NSInteger item_id = [result intForColumn:@"item_id"]; NSString *friend_id = [result stringForColumn:@"friend_id"]; NSString *group_id = [result stringForColumn:@"group_id"]; NSString *remark = [result stringForColumn:@"reamrk"]; NSString *session_id = [result stringForColumn:@"session_id"]; NSString *userName = [result stringForColumn:@"userName"]; NSString *user_id = [result stringForColumn:@"user_id"]; model = [XLUserModel xlModelWithItemId:item_id friendId:friend_id groupId:group_id remark:remark sessionId:session_id userId:user_id userName:userName]; } // 关闭数据库 [xldb.fmdb close]; return model;}// 改- (BOOL)updateDataBaseWithModel:(XLUserModel *)model { if (![xldb.fmdb open]) { return NO; } // 操作数据库 -- 修改一条数据 BOOL isSuccess = [xldb.fmdb executeUpdate:@"update friends set group_id = ?, reamrk = ?, session_id = ?, userName = ? where friend_id = ?", model.groupId, model.remark, model.sessionId, model.userName, model.friendId]; // 关闭数据库 [xldb.fmdb close]; return isSuccess;}// 查询所有数据- (NSMutableArray *)selectAllFromDataBase { // 打开数据库 if (![xldb.fmdb open]) { return nil; } xldb.dataArray = nil; // 操作数据库 FMResultSet *result = [xldb.fmdb executeQuery:@"select * from friends"]; while ([result next]) { // 查看是否还有下一条数据 NSInteger item_id = [result intForColumn:@"item_id"]; NSString *friend_id = [result stringForColumn:@"friend_id"]; NSString *group_id = [result stringForColumn:@"group_id"]; NSString *remark = [result stringForColumn:@"reamrk"]; NSString *session_id = [result stringForColumn:@"session_id"]; NSString *userName = [result stringForColumn:@"userName"]; NSString *user_id = [result stringForColumn:@"user_id"]; XLUserModel *model = [XLUserModel xlModelWithItemId:item_id friendId:friend_id groupId:group_id remark:remark sessionId:session_id userId:user_id userName:userName]; [xldb.dataArray addObject:model]; } // 关闭数据库 [xldb.fmdb close]; return self.dataArray;}// 删除所有数据- (BOOL)deleteFromDataBase { // 打开数据库 if (![xldb.fmdb open]) { return NO; } // 操作数据库 -- 删除当前表 BOOL isSuccess = [xldb.fmdb executeUpdate:@"delete from friends"]; // 关闭数据库 [xldb.fmdb close]; return isSuccess;}// 获取数据库文件路径- (NSString *)dataBasePath { // 获取Documents文件夹路径 NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; // 拼接上数据库文件路径 return [docPath stringByAppendingPathComponent:[NSString stringWithFormat:@"panda.sqlite"]];}
FMDB另外使用使用方式
// MARK: - FMDatabaseQueue- (void)xl_createFMDatabaseQueue { FMDatabaseQueue *databaseQueue = [FMDatabaseQueue databaseQueueWithPath:@""];#pragma unused(databaseQueue) [databaseQueue inDatabase:^(FMDatabase *db) { if (![self isTableOK:@"MYTABLE" withDB:db]) { NSString *createTableSQL = @"CREATE TABLE MYTABLE (id integer PRIMARY KEY autoincrement, userid text, name text, portraitUri text)"; [db executeUpdate:createTableSQL]; NSString *createIndexSQL = @"CREATE unique INDEX idx_userid ON MYTABLE(userid);"; [db executeUpdate:createIndexSQL]; } }];}/** FMResultSet *rs = [self executeQuery:@"select [sql] from sqlite_master where [type] = 'table' and lower(name) = ?", tableName]; */- (BOOL)isTableOK:(NSString *)tableName withDB:(FMDatabase *)db { BOOL isOK = NO; FMResultSet *resultSet = [db executeQuery:@"select count(*) as 'count' from sqlite_master where type ='table' and name = ?", tableName]; while ([resultSet next]) { NSInteger count = [resultSet intForColumn:@"count"]; if (0 == count) { isOK = NO; } else { isOK = YES; } } [resultSet close]; return isOK;}
0 0
- IOS开发之IOS生命周期
- IOS开发之CALayer
- iOS开发之---ECSlidingViewController
- iOS开发之NSNotification
- IOS开发之路
- iOS开发之UIWebView
- ios开发之MVC
- iOS开发之label
- ios开发之NSUserDefaults
- IOS开发之UITouch
- iOS开发之UIWebView
- IOS开发之UINavigationController
- iOS开发之UIWebView
- iOS开发之归档
- iOS开发之UIViewController
- IOS开发之UITouch
- IOS开发之NSAssert
- IOS 开发之 截图
- C#使用RenderControl将GridView控件导出到EXCEL的方法
- HRBUST1150-相识
- SQLServer控制用户访问权限表
- PorterDuffXferMode不正确的真正原因PorterDuffXferMode深入试验
- 继承与多态虚函数分析
- iOS开发之
- 坦克大战 【优先队列】
- Linux十个基础知识点
- 在mac下修改mysql密码
- 小程序中使用的第三方库
- Python+Selenium3最新配置
- ZZULI 1190 Faulty Odometer
- jpa 里用的分页实现类org.springframework.data.domain.PageImpl<T>
- Atitit tomcat在linux服务器的启动与其他