WCDB的使用--增刪改查

WCDB 是騰訊開源的一個數(shù)據(jù)庫三方庫,使用起來比FMDB更加方便(->GitHub地址),下面主要講下如何使用WCDB經(jīng)常常用的增刪改查操作。

首先Message表的字段如下:

typedef NS_ENUM(NSInteger, MessageType) {
    MessageTypeOne = 1,
    MessageTypeTwo = 2,
    MessageTypeThree = 3,
};

@interface Message : NSObject

@property(nonatomic, assign) int32_t localID;
@property(nonatomic, assign) uint64_t count;
@property(nonatomic, strong) NSString *content;
@property(nonatomic, strong) NSDate *createTime;
@property(nonatomic, strong) NSDate *modifiedTime;
@property(nonatomic, assign) MessageType type;
@property(nonatomic, strong) NSArray *array;
@property(nonatomic, assign) uint64_t msgId;
@property(nonatomic, strong) NSString *uuid;

@end

一、增

1.插入一條數(shù)據(jù)

SQL: INSERT INTO message(localID,count,content,createTime,modifiedTime,type,array,msgId,uuid) VALUES(?,?,?,?,?,?,?,?,?)

BOOL result = [self.database insertObject:message into:@"message"];
2.插入批量數(shù)據(jù)
NSArray <Message *> *dbArr;
BOOL result = [self.database insertObjects:dbArr into:@"message"];
3.插入,如果存在則替換

SQL: INSERT OR REPLACE INTO message(localID,count,content,createTime,modifiedTime,type,array,msgId,uuid) VALUES(?,?,?,?,?,?,?,?,?)

BOOL result = [self.database insertOrReplaceObjects:dbArr into:@"message"];

二、刪

SQL: DELETE FROM message WHERE localID = 11;

BOOL result = [self.database deleteObjectsFromTable:@"message" where:Message.localID == 11];

三、改

1.修改某列數(shù)據(jù)(只修改部分?jǐn)?shù)據(jù)加個where語句)

SQL: UPDATE message SET content="Hello, Wechat!";

有兩種方法:

第一種:
BOOL result = [self.database updateAllRowsInTable:@"message" onProperty:Message.content withValue:@"Hello, Wechat!"];

第二種:
Message *message = [[Message alloc] init];
message.content = @"Hello, Wechat!";

BOOL result = [self.database updateAllRowsInTable:@"message" onProperty:Message.content withObject:message];

2.修改多列數(shù)據(jù):

SQL: UPDATE message SET content="Hello, WCDB! 2", count=100 WHERE localID=2;

同樣有兩種方法:

第一種:
Message *message = [[Message alloc] init];
message.content = @"Hello, WCDB! 2";
message.count = 100;

NSArray *row = @[message.content, @(message.count)];
BOOL result = [self.database updateRowsInTable:@"message"
                                  onProperties:{Message.content, Message.count}
                                       withRow:row
                                         where:Message.localID == 2];
                                         
                                         
第二種:
BOOL result = [self.database updateRowsInTable:@"message"
                                  onProperties:{Message.content, Message.count}
                                    withObject:message
                                         where:Message.localID == 2];

四、查

1.查詢一條數(shù)據(jù)

QSL:SELECT * FROM message WHERE msgId = 6301664026019662621;

Message *msg = [self.database getOneObjectOfClass:Message.class fromTable:@"message" where:Message.msgId == 6301664026019662621];
2.查詢多行數(shù)據(jù)

QSL:SELECT * FROM message WHERE localID > 10 AND localID < 100 ORDER BY localID DESC;

NSArray<Message *> *message = [self.database getObjectsOfClass:Message.class
                                                         fromTable:@"message"
                                                             where:Message.localID > 10 && Message.localID < 100
                                                           orderBy:Message.localID.order(WCTOrderedDescending)];
3.查詢行數(shù)

QSL:SELECT COUNT(*) FROM message WHERE localID > 10 AND localID < 100;

NSNumber *count = [self.database getOneValueOnResult:Message.AnyProperty.count()
                                               fromTable:@"message"
                                                   where:Message.localID > 10 && Message.localID < 100];
4.函數(shù)計算(單個)

QSL:SELECT SUM(localID) FROM message;

NSNumber *sum = [self.database getOneValueOnResult:Message.localID.sum()
                                             fromTable:@"message"];
5.函數(shù)計算(多個)

QSL:SELECT MAX(localID), MIN(localID) FROM Message;

WCTOneRow *row = [self.database getOneRowOnResults:{Message.localID.max(), Message.localID.min()}
                                             fromTable:@"message"];
NSNumber *intValueMax = (NSNumber *) row[0];
NSNumber *intValueMin = (NSNumber *) row[1];
6.SELECT IN 查詢

QSL:SELECT * FROM message WHERE localID IN (1,6,3);

NSArray *localIDs = @[@(1), @(6), @(3)];
NSArray<Message *> *message = [self.database getObjectsOfClass:Message.class fromTable:@"message" where:Message.localID.in(localIDs)];

QSL:SELECT * FROM message WHERE localID NOT IN (SELECT localID FROM message WHERE localID > 100);

NSArray<Message *> *msgs = [self.database getObjectsOfClass:Message.class fromTable:@"message" where:Message.localID.notIn([self.database getOneColumnOnResult:Message.localID fromTable:@"message"  where:Message.localID > 100])];
7.LIKE查詢

QSL:SELECT * FROM message WHERE content like "%WCDB%";

NSString *param = @"%%WCDB%%";
NSArray<Message *> *messages = [self.database getObjectsOfClass:Message.class
                                                fromTable:@"message"
                                                    where:Message.content.like(param)];

結(jié)尾

以上列舉了WCDB的一些常用語句操作,如果有疑問可以在下面留言,WCDB后續(xù)我會再寫一篇關(guān)于一些特殊語句需要用到核心層接口的文章,如果本篇文章對你有所幫助或者啟發(fā),麻煩點(diǎn)個贊??,謝謝~

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

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

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