UI之FMDataBase
2016-04-07 20:18
344 查看
**//DataBaseUtil.h文件** ------------------ /*使用FMDB(数据库)的步骤:1.导入libsqlite3.0.tbd依赖库 2.导入FMDB文件 */ /* 数据库:数据库是以表的形式存储数据 对数据库的操作 建表(create table) 增(insert) 删(delete) 改(update) 查(select) SQLite数据库字段约束条件 NOT NULL -非空 UNIQUE -唯一 PRIMARY KEY -主键 FOREIGN KEY -外键 CHECK -条件检查,确保一列中的所有值满足一定的条件 DEFAULT -默认 AUTOINCREATEMENT -自增型变量 什么是单例对象? 单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。 */ #import <Foundation/Foundation.h> #import "FMDatabase.h" #import "Movie.h" //movie对象有三个属性分别为:name,actor,country; @interface DataBaseUtil : NSObject //创建一个单例对象 +(DataBaseUtil *)shareDatabase; //声明一系列对数据库操作的方法 //创建表的方法 -(BOOL)createTbale; //增加数据的方法 -(BOOL)insertMovie:(Movie *)movie; //删除数据 -(BOOL)deleteMovieWithName:(NSString *)name; //更新数据 -(BOOL)updateMoviename:(NSString *)name newname:(NSString *)newName; //查询 -(NSArray *)seleteMoviesTableWithName:(NSString *)name; @end **//DataBaseUtil.m文件** ------------------ #import "DataBaseUtil.h" static DataBaseUtil *database = nil; //怎么在.m写属性? //利用延展添加私有属性 @interface DataBaseUtil () //db就是数据库 @property(nonatomic,strong)FMDatabase *db; @end @implementation DataBaseUtil //产生一个单例对象 +(DataBaseUtil *)shareDatabase { if (database == nil) { database = [[DataBaseUtil alloc] init]; } return database; } //在初始化方法中完成文件和对象的对接 -(id)init { self = [super init]; if (self) { //拿document路径 NSString *docpath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject]; //创建movielist数据库文件 NSString *dbPath = [docpath stringByAppendingPathComponent:@"movie.sqlite"]; self.db = [FMDatabase databaseWithPath:dbPath]; } return self; } //创表 -(BOOL)createTbale { if ([_db open]) { //创建表的SQL语句 NSString *table = [NSString stringWithFormat:@"create table if not exists movies (id integer primary key autoincrement,name text,actor text,country text)"]; //执行语句 BOOL b = [_db executeUpdate:table]; if (b) { NSLog(@"建表成功"); } [_db close]; return b; } return NO; } //往表添加数据 -(BOOL)insertMovie:(Movie *)movie { if ([_db open]) { NSString *insert = [NSString stringWithFormat:@"insert into movies (name,actor,country) values ('%@','%@','%@')",movie.name,movie.actor,movie.country]; //执行语句 BOOL bb = [_db executeUpdate:insert]; if (bb) { NSLog(@"添加成功"); } [_db close]; return bb; } return NO; } //删除表里面的内容 -(BOOL)deleteMovieWithName:(NSString *)name { if ([_db open]) { NSString *deleteName = [NSString stringWithFormat:@"delete from movies where name = '%@'",name]; BOOL bbb = [_db executeUpdate:deleteName]; if (bbb) { NSLog(@"删除成功"); } [_db close]; return bbb; } return NO; } //更新数据 -(BOOL)updateMoviename:(NSString *)name newname:(NSString *)newName { if ([_db open]) { NSString *update = [NSString stringWithFormat:@"update movies set actor = '%@' where actor = '%@'",newName,name]; BOOL b1 = [_db executeUpdate:update]; if (b1) { NSLog(@"更新成功"); } [_db close]; return b1; } return NO; } //查询 -(NSArray *)seleteMoviesTableWithName:(NSString *)name { NSMutableArray *array = [NSMutableArray array]; if ([_db open]) { //模糊查询关键字 NSString *sql = [NSString stringWithFormat:@"select * from movies where name like \"%%%@%%\"",name]; //排序的关键字 order by FMResultSet *set = [_db executeQuery:sql]; while ([set next]) { NSString *name = [set stringForColumn:@"name"]; NSString *actor = [set stringForColumn:@"actor"]; NSString *country = [set stringForColumn:@"country"]; Movie *mo = [[Movie alloc] init]; mo.name = name; mo.actor = actor; mo.country = country; [array addObject:mo]; } [_db close]; return array; } return array; } @end
相关文章推荐
- IOS 开发-UI初级 (二 · 后续)View,ViewController实践和应用
- Google Chrome源码剖析【四】:UI绘制
- DuiLib(8)——Menu菜单的实现方式
- Android Bluetooth 框架简读 <1>
- 自定义UIview放入到controller中
- ${param.name}和${requestScope.name}小区别,及用处
- UESTC第十四届校赛A题解题报告
- Leetcode_300_Longest Increasing Subsequence
- 动态计算UITableViewCell高度详解
- getParameter()和getParameterValue()的区别
- uva11324 The Largest Clique --- 强连通+dp
- APUE------线程同步
- iOS开发之UITableView的使用
- UI控件无法显示的原因小结
- iOS UIView动画效果 学习笔记
- LeetCode334. Increasing Triplet Subsequence完美解答
- (Caffe)基本类DataReader、QueuePair、Body(四)
- Android高级UI之ViewPager实现页卡的最新方法-简洁的TabLayout
- uint8_t / uint16_t / uint32_t /uint64_t
- ie浏览器强制开启怪异模式(Quirks Mode)的解决方法