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)個贊??,謝謝~