iOS中FMDatabase應(yīng)用

使用FMDatabase庫(kù)管理sqlite3數(shù)據(jù)庫(kù)。

步驟如下:

1、創(chuàng)建本地DB
(1)DB.h

#import <Foundation/Foundation.h>
#import "FMDatabase.h"
#import "FMDatabaseQueue.h"
#import "LX_Singleton.h"
#define LXDAO [LX_Dao sharedInstance]
typedef void (^DatabaseBlock)(FMDatabase *db);
typedef void (^TransactionBlock)(FMDatabase *db, BOOL *rollback);
@interface LX_Dao : NSObject
AS_SINGLETON(LX_Dao);
- (void)inDatabase:(DatabaseBlock)block;
- (void)inTransaction:(TransactionBlock)block;
@end

(2)DB.m(注意數(shù)據(jù)庫(kù)存儲(chǔ)路徑)

#import "LX_Dao.h"
static FMDatabaseQueue *dbQueue;
@implementation LX_Dao
DEF_SINGLETON(LX_Dao);
- (id)init
{
    self = [super init];
    if (self) {
        if (dbQueue == nil) {
            NSString *filePath = [[LX_Sandbox docPath] stringByAppendingPathComponent:@"linxunDb.db"];
            dbQueue = [[FMDatabaseQueue alloc] initWithPath:filePath];
        }
    }
    return self;
}
- (void)inDatabase:(DatabaseBlock)block{
    if (!block) {
        return;
    }
    [dbQueue inDatabase:^(FMDatabase *db) {
        [db setTraceExecution:YES];
        block(db);
    }];
}
- (void)inTransaction:(TransactionBlock)block{
    if (!block) {
        return;
    }
    [dbQueue inTransaction:^(FMDatabase *db, BOOL *rollback) {
        [db setTraceExecution:YES];
        block(db,rollback);
        if (*rollback == YES) {
            LX_DLog(@"數(shù)據(jù)庫(kù)出錯(cuò)--->error:%@",[db lastErrorMessage]);
        }
    }];
}
@end

2、操作數(shù)據(jù)庫(kù)(創(chuàng)建表,添加,刪除,查詢,修改)

- (void)createGroupListTable
{
    __block BOOL success = YES;
    [self inTransaction:^(FMDatabase *db, BOOL *rollback) {

        success = [db executeUpdate:@"CREATE TABLE if not exists group_list_table (_id integer not null primary key autoincrement, group_id text not null, group_name text not null, group_avatar text, create_time text not null, creator_id text not null)"];
        if (!success) {

            *rollback = YES;
        }
    }];
}
- (void)insertGroupWithModel:(GroupInfoModel *)model
{
    __block BOOL success = YES;
    [self inTransaction:^(FMDatabase *db, BOOL *rollback) {

        success = [db executeUpdate:@"INSERT INTO group_list_table (group_id,group_name,group_avatar,create_time,creator_id) VALUES (?,?,?,?,?)", model.groupId, model.groupName, model.groupAvatar, model.createTime, model.creatorId];
        if (!success) {

            *rollback = YES;
        }
    }];
}
- (void)updateGroupNameWithGroupId:(NSString *)groupId groupName:(NSString *)groupName
{
    __block BOOL success = YES;
    [self inTransaction:^(FMDatabase *db, BOOL *rollback) {

        success = [db executeUpdate:@"UPDATE group_list_table set group_name = ? where group_id = ?", groupName, groupId];
        if (!success) {

            *rollback = YES;
        }
    }];
}
- (void)updateGroupAvatarWithGroupId:(NSString *)groupId ImageStr:(NSString *)imageStr
{
    __block BOOL success = YES;
    [self inTransaction:^(FMDatabase *db, BOOL *rollback) {

        success = [db executeUpdate:@"UPDATE group_list_table set group_avatar = ? where group_id = ?", imageStr, groupId];
        if (!success) {

            *rollback = YES;
        }
    }];
}
- (void)deleteGroupWithGroupId:(NSString *)groupId
{
    __block BOOL success = YES;
    [self inTransaction:^(FMDatabase *db, BOOL *rollback) {

        success = [db executeUpdate:@"DELETE FROM group_list_table WHERE group_id = ? and creator_id = ?", groupId, USERID];
        if (!success) {

            *rollback = YES;
        }
    }];
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容