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;

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 效果圖附上: 插入數據 刪除數據 更新數據 查找數據 分頁檢索數據 Other數據- 這里時間限制,不演示全部 前...
    Codepgq閱讀 2,955評論 11 26
  • 寫在前面 看完本文你將掌握以下內容 掌握簡單 SQL 語法 掌握 SQLite 的簡單操作 基礎知識 SQL 語法...
    無名小子的雜貨鋪閱讀 1,512評論 0 11
  • SQLite簡介SQLite,是一款輕型的數據庫,是遵守ACID的關系型數據庫管理系統,它包含在一個相對小的C庫中...
    J_mine閱讀 511評論 0 2
  • 首先 導入FMDB 并添加FMDB依賴庫(labslite3.0) 創建model類 如圖 緊接著創建業務處理層...
    酷酷的疼閱讀 523評論 0 0
  • 腰痛不是病痛起來也要人命,第一次痛得連打個噴嚏都得小心翼翼,彎腰,抬腳的動作都要痛一會兒,以前不知道腰痛是什么滋味...
    燕紀事閱讀 428評論 2 0