您的位置:首页 > 产品设计 > UI/UE

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: