sqlite使用

dao类


方法申明

//创建people表

+(BOOL)createTablefriend;

//向people表插入一条数据 ,方法带参数,需要将人的名字和年龄传过来

+(BOOL)insertIntofriendWithDic:(NSDictionary *)dictionary;

//查询最大的id号

+(int)selectMaxID;

//查询表中所有的人

+(NSMutableArray*)selectAllfriend;

//根据ID或者名字查找某一个人

+(friendModel*)selectFriendWithString:(NSString *)flagString stringTypeIsNameOrId:(BOOL)isName;


//根据用户的id,修改用户的 昵称和头像

+(void)updateFriendWithHeadUrl:(NSString *)headUrl withNick:(NSString *)aNick forFriendId:(NSString*)idString;


//根据用户的id,修改用户的昵称

+(void)updateFriendWithNick:(NSString*)aNick forFriendId:(NSString*)idString;

//根据用户的id,修改用户的备注

+(void)updateFriendWithRemark:(NSString*)aRemark forFriendId:(NSString*)idString;

//根据用户的id,修改用户的 头像

+(void)updateFriendWithHeadUrl:(NSString *)headUrl forFriendId:(NSString*)idString;

//根据id号删除一个人

+(BOOL)deleteForfriendID:(NSInteger)aID;

+(void)deleteAllResource;

方法实现

//创建people表

+(BOOL)createTablefriend

{

//1.获取数据对象

FMDatabase *db= [dataBaseTool shareDatabase];

//2.执行创建表的sql语句

BOOL rs=  [db executeUpdate:@"create table if not exists friend(id integer primary key autoincrement,city text,acountry text,province text,t_sign text,nickname text,headimgurl text,phone text,remarks_name text,recomment integer,member_id integer,relationship integer,sex integer,shown_photo integer,is_yanz integer)"];

//3.关闭数据库

[dataBaseTool closeDatabase];

if (rs==YES) {

NSLog(@"创建表成功");

return YES;

}

return NO;

}

//向people表插入一条数据 ,方法带参数,需要将人的名字和年龄传过来

+(BOOL)insertIntofriendWithDic:(NSDictionary *)dictionary

{

FMDatabase *db =[dataBaseTool shareDatabase];

BOOL rs=  [db executeUpdate:@"insert into friend(city,acountry,province,t_sign,nickname,headimgurl,phone,remarks_name,recomment,member_id,relationship,sex,shown_photo,is_yanz)values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)",dictionary[@"city"],dictionary[@"country"],dictionary[@"province"],dictionary[@"t_sign"],dictionary[@"nickname"],dictionary[@"headimgurl"],dictionary[@"phone"],dictionary[@"remarks_name"],dictionary[@"recomment"],dictionary[@"member_id"],dictionary[@"relationship"],dictionary[@"sex"],dictionary[@"shown_photo"],dictionary[@"is_yanz"]];

[dataBaseTool closeDatabase];

if (rs==YES) {

NSLog(@"插入成功");

return YES;

}

return NO;

}

//查询最大的id号

+(int)selectMaxID

{

FMDatabase *db =[dataBaseTool shareDatabase];

FMResultSet *set =[db executeQuery:@"select max(id) from friend"];

//结果集中肯定只有一条数据,可以不写while循环

[set next];

int max = [set intForColumn:@"max(id)"];

//关闭结果集

[set close];

//关闭数据库

[dataBaseTool closeDatabase];

return max;

}

//查询表中所有的人

+(NSMutableArray*)selectAllfriend

{

//获取数据库对象

FMDatabase *db =[dataBaseTool shareDatabase];

//执行查询的sql语句

FMResultSet *set =[db executeQuery:@"select * from friend"];

NSMutableArray *arr =[NSMutableArray arrayWithCapacity:0];

//从结果集中取数据

while ([set next]) {

// NSString *strr = [dataBaseTool filePath];

NSString *city = [[set stringForColumn:@"city"] length] > 0 ? [set stringForColumn:@"city"] : @"";

NSString *acountry = [[set stringForColumn:@"acountry"] length] > 0 ? [set stringForColumn:@"acountry"] : @"";

NSString *province = [[set stringForColumn:@"province"] length] > 0 ? [set stringForColumn:@"province"] : @"";

NSString *t_sign = [[set stringForColumn:@"t_sign"] length] > 0 ? [set stringForColumn:@"t_sign"] : @"";

NSString *nickname = [[set stringForColumn:@"nickname"] length] > 0 ? [set stringForColumn:@"nickname"] : @"";

NSString *headimgurl = [[set stringForColumn:@"headimgurl"] length] > 0 ? [set stringForColumn:@"headimgurl"] : @"";

NSString *phone = [[set stringForColumn:@"phone"] length] > 0 ? [set stringForColumn:@"phone"] : @"";

NSString *remarks_name = [[set stringForColumn:@"remarks_name"] length] > 0 ? [set stringForColumn:@"remarks_name"] : @"";

NSInteger recomment = [set intForColumn:@"recomment"];

NSInteger member_id = [set intForColumn:@"member_id"];

NSInteger relationship = [set intForColumn:@"relationship"];

NSInteger sex = [set intForColumn:@"sex"];

NSInteger shown_photo = [set intForColumn:@"shown_photo"];

NSInteger is_yanz = [set intForColumn:@"is_yanz"];

NSDictionary *tempDic = @{@"city":city,@"country":acountry,@"province":province,@"t_sign":t_sign,@"nickname":nickname,@"headimgurl":headimgurl,@"phone":phone,@"remarks_name":remarks_name,@"recomment":@(recomment),@"member_id":@(member_id),@"relationship":@(relationship),@"sex":@(sex),@"shown_photo":@(shown_photo),@"is_yanz":@(is_yanz)};

friendModel *friend = [[friendModel alloc] initWithDic:tempDic];

friend.fmdbID = [set intForColumn:@"id"];

[arr addObject:friend];

}

//关闭结果集

[set close];

//关闭数据库

[dataBaseTool closeDatabase];

return arr;

}

//根据ID或者名字查找某一个人

+(friendModel*)selectFriendWithString:(NSString *)flagString stringTypeIsNameOrId:(BOOL)isName

{

FMDatabase *db =[dataBaseTool shareDatabase];

FMResultSet *set = nil;

if (isName == YES)

{

set =[db executeQuery:@"select * from friend where nickname= ?",flagString];

}else

{

set =[db executeQuery:@"select * from friend where member_id= ?",flagString];

}

if ([set next])

{

NSString *city = [[set stringForColumn:@"city"] length] > 0 ? [set stringForColumn:@"city"] : @"";

NSString *acountry = [[set stringForColumn:@"acountry"] length] > 0 ? [set stringForColumn:@"acountry"] : @"";

NSString *province = [[set stringForColumn:@"province"] length] > 0 ? [set stringForColumn:@"province"] : @"";

NSString *t_sign = [[set stringForColumn:@"t_sign"] length] > 0 ? [set stringForColumn:@"t_sign"] : @"";

NSString *nickname = [[set stringForColumn:@"nickname"] length] > 0 ? [set stringForColumn:@"nickname"] : @"";

NSString *headimgurl = [[set stringForColumn:@"headimgurl"] length] > 0 ? [set stringForColumn:@"headimgurl"] : @"";

NSString *phone = [[set stringForColumn:@"phone"] length] > 0 ? [set stringForColumn:@"phone"] : @"";

NSString *remarks_name = [[set stringForColumn:@"remarks_name"] length] > 0 ? [set stringForColumn:@"remarks_name"] : @"";

NSInteger recomment = [set intForColumn:@"recomment"];

NSInteger member_id = [set intForColumn:@"member_id"];

NSInteger relationship = [set intForColumn:@"relationship"];

NSInteger sex = [set intForColumn:@"sex"];

NSInteger shown_photo = [set intForColumn:@"shown_photo"];

NSInteger is_yanz = [set intForColumn:@"is_yanz"];

NSDictionary *tempDic = @{@"city":city,@"country":acountry,@"province":province,@"t_sign":t_sign,@"nickname":nickname,@"headimgurl":headimgurl,@"phone":phone,@"remarks_name":remarks_name,@"recomment":@(recomment),@"member_id":@(member_id),@"relationship":@(relationship),@"sex":@(sex),@"shown_photo":@(shown_photo),@"is_yanz":@(is_yanz)};

friendModel *friend = [[friendModel alloc] initWithDic:tempDic];

friend.fmdbID = [set intForColumn:@"id"];

[set close];

[dataBaseTool closeDatabase];

return friend;

}else

{

[set close];

[dataBaseTool closeDatabase];

return nil;

}

}



//根据用户的id,修改用户的 昵称和头像

+(void)updateFriendWithHeadUrl:(NSString *)headUrl withNick:(NSString *)aNick forFriendId:(NSString*)idString

{

FMDatabase *db =[dataBaseTool shareDatabase];

BOOL firstOk = [db executeUpdate:@"update friend set headimgurl = ? where member_id =?",headUrl,idString];

BOOL twoOk = [db executeUpdate:@"update friend set nickname = ? where member_id =?",aNick,idString];

if (firstOk && twoOk)

{

NSLog(@"修改成功");

}else{

NSLog(@"修改失败");

}

[dataBaseTool closeDatabase];

}


//根据用户的id,修改用户的昵称

+(void)updateFriendWithNick:(NSString*)aNick forFriendId:(NSString*)idString

{

FMDatabase *db =[dataBaseTool shareDatabase];

[db executeUpdate:@"update friend set nickname = ? where member_id =?",aNick,idString];

[dataBaseTool closeDatabase];

}

//根据用户的id,修改用户的备注

+(void)updateFriendWithRemark:(NSString*)aRemark forFriendId:(NSString*)idString

{

FMDatabase *db =[dataBaseTool shareDatabase];

[db executeUpdate:@"update friend set remarks_name = ? where member_id =?",aRemark,idString];

[dataBaseTool closeDatabase];

}

//根据用户的id,修改用户的 头像

+(void)updateFriendWithHeadUrl:(NSString *)headUrl forFriendId:(NSString*)idString

{

FMDatabase *db =[dataBaseTool shareDatabase];

[db executeUpdate:@"update friend set headimgurl = ? where member_id =?",headUrl,idString];

[dataBaseTool closeDatabase];

}

//根据id号删除一个人

+(BOOL)deleteForfriendID:(NSInteger)aID

{

FMDatabase *db =[dataBaseTool shareDatabase];

BOOL rs=  [db executeUpdate:@"delete from friend where member_id=?",@(aID)];

[dataBaseTool closeDatabase];

if (rs==YES) {

NSLog(@"删除成功");

return YES;

}

return NO;

}

+(void)deleteAllResource

{

FMDatabase *db =[dataBaseTool shareDatabase];

[db executeUpdate:@"delete from friend"];

[dataBaseTool closeDatabase];

}

Tool类


申明方法

//获取数据库对象

+(FMDatabase*)shareDatabase;

//打开数据库的方法

+(BOOL)openDatabase;

//关闭数据库的方法

+(BOOL)closeDatabase;

//获取数据库文件路径

+(NSString*)filePath;

实现方法

//写在花括号中的变量是实例变量,类方法中不能使用实例变量

//声明在方法之外的变量 才是全局变量。 全部变量的作用域是我们的整个工程。

//为了全局变量的数据安全性,我们用static修饰全局变量。限定该全局变量只能在当前文件中用

static  FMDatabase *_db=nil;

//获取FMDatabase对象,并且保证整个工程中只有这一个对象

+(FMDatabase*)shareDatabase{

//如果_db不存在,就创建一个,如果存在就直接返回

if (_db==nil) {

_db =[[FMDatabase alloc]initWithPath:[self filePath]];

}

//打开数据库  获取对象之后直接就打开,不用再手动调用打开数据库的代码了

[self openDatabase];

//设置缓冲  提供效率

[_db setShouldCacheStatements:YES];

return _db;

}

//打开数据库

+(BOOL)openDatabase{

if (![_db open]) { //打开失败

[_db close];

NSAssert(NO, @"数据库打开失败");

return NO;

}

return YES;

}

//关闭数据库

+(BOOL)closeDatabase{

if (![_db close]) {

NSAssert(NO, @"数据库关闭失败");

return NO;

}

return YES;

}

//数据库文件路径

+(NSString*)filePath{

return [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/friend.sqlite"];

}

model类


申明

@property (nonatomic,strong)NSString *city;

@property (nonatomic,strong)NSString *acountry;

@property (nonatomic,strong)NSMutableArray *photos;

@property (nonatomic,strong)NSString *province;

@property (nonatomic,strong)NSString *t_sign;

@property (nonatomic,strong)NSString *nickname;

@property (nonatomic,strong)NSString *headimgurl;

@property (nonatomic,strong)NSString *phone;

@property (nonatomic,strong)NSString *remarks_name;

@property (nonatomic,assign)NSInteger recomment;

@property (nonatomic,assign)NSInteger member_id;

@property (nonatomic,assign)NSInteger relationship;

@property (nonatomic,assign)NSInteger sex;

@property (nonatomic,assign)NSInteger shown_photo;

@property (nonatomic,assign)NSInteger is_yanz;

@property (nonatomic,assign)NSInteger fmdbID;//数据库用

- (instancetype)initWithDic:(NSDictionary *)dic;


实现

- (instancetype)initWithDic:(NSDictionary *)dic

{

self = [super init];

if (self) {

self.city = dic[@"city"];

self.acountry = dic[@"country"];

self.province = dic[@"province"];

self.t_sign  = dic[@"t_sign"];

_nickname = dic[@"nickname"];

_headimgurl = dic[@"headimgurl"];

_phone = dic[@"phone"];

_remarks_name = dic[@"remarks_name"];

if ([dic.allKeys containsObject:@"photos"]) {

self.photos = [[NSMutableArray alloc] initWithArray:dic[@"photos"]];

}

_recomment = [dic[@"recomment"] integerValue];

_member_id = [dic[@"member_id"] integerValue];

self.relationship = [dic[@"relationship"] integerValue];

self.sex = [dic[@"sex"] integerValue];

self.shown_photo = [dic[@"shown_photo"] integerValue];

self.is_yanz = [dic[@"is_yanz"] integerValue];

}

return self;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容

  • 效果图附上: 插入数据 删除数据 更新数据 查找数据 分页检索数据 Other数据- 这里时间限制,不演示全部 前...
    Codepgq阅读 2,898评论 11 26
  • 写在前面 看完本文你将掌握以下内容 掌握简单 SQL 语法 掌握 SQLite 的简单操作 基础知识 SQL 语法...
    無名小子的杂货铺阅读 1,470评论 0 11
  • SQLite简介SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中...
    J_mine阅读 493评论 0 2
  • 首先 导入FMDB 并添加FMDB依赖库(labslite3.0) 创建model类 如图 紧接着创建业务处理层...
    酷酷的疼阅读 481评论 0 0
  • 腰痛不是病痛起来也要人命,第一次痛得连打个喷嚏都得小心翼翼,弯腰,抬脚的动作都要痛一会儿,以前不知道腰痛是什么滋味...
    燕纪事阅读 412评论 2 0