美文网首页第三方库
WCDB的使用--增删改查

WCDB的使用--增删改查

作者: 须左能乎 | 来源:发表于2018-02-04 16:25 被阅读2936次

WCDB 是腾讯开源的一个数据库三方库,使用起来比FMDB更加方便(->GitHub地址),下面主要讲下如何使用WCDB经常常用的增删改查操作。

首先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.插入一条数据

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

BOOL result = [self.database insertObject:message into:@"message"];
2.插入批量数据
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.修改某列数据(只修改部分数据加个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.修改多列数据:

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.查询一条数据

QSL:SELECT * FROM message WHERE msgId = 6301664026019662621;

Message *msg = [self.database getOneObjectOfClass:Message.class fromTable:@"message" where:Message.msgId == 6301664026019662621];
2.查询多行数据

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.查询行数

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.函数计算(单个)

QSL:SELECT SUM(localID) FROM message;

NSNumber *sum = [self.database getOneValueOnResult:Message.localID.sum()
                                             fromTable:@"message"];
5.函数计算(多个)

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)];

结尾

以上列举了WCDB的一些常用语句操作,如果有疑问可以在下面留言,WCDB后续我会再写一篇关于一些特殊语句需要用到核心层接口的文章,如果本篇文章对你有所帮助或者启发,麻烦点个赞👍,谢谢~

相关文章

  • WCDB的使用--增删改查

    WCDB 是腾讯开源的一个数据库三方库,使用起来比FMDB更加方便(->GitHub地址),下面主要讲下如何使用W...

  • Swift中CoreData的基本用法

    前几天看了一下CoreData的增删改查,于是试着在demo里面加进去使用 增 删 改 查

  • mysql的插入语句

    MySQL增删改查之增insert、replace

  • MYSQL数据库的增删改查

    MYSQL数据库的增删改查 一.对于库的增删改查 增create database 库名称;create data...

  • 关于python的list的增查删改

    说到增查删改,想起了数据库,我们在关系型数据库当中就会对表进行增查删改。 在python当中我们也可以对list进...

  • 0812 A

    mongodb 增删改查 增: db.createCollection("name", {options:numb...

  • 增删改

    对于表中的操作,就是增删改查,查内容较多,这里先说增删改。 1.增(insert或者load) 即插入数据,多行插...

  • Realm在React-Native中使用

    Realm增删改查 使用

  • 数据库.记录的增删改查

    数据库关于记录的增删改查(目前使用的是MySQL客户端 没有使用图形管理工具) 增:INSERT 1),INSER...

  • SQL查询结构总结

    SQL 增删改查 对数据库有修改的操作是:增删改 增 insert into 表名 values(); 删 del...

网友评论

    本文标题:WCDB的使用--增删改查

    本文链接:https://www.haomeiwen.com/subject/nmbpzxtx.html