美文网首页
RTDatabase(2) SQL篇

RTDatabase(2) SQL篇

作者: __ENUUI | 来源:发表于2018-07-03 18:46 被阅读0次

RTDatabase(1) 存储篇

开发中涉及到字符串时,总有让人头疼的时候。毕竟字符串没有智能提示,只能硬码或者copy。也出现过特别难debug的问题。
操作 sqlite3 时,无可避免的要编辑很多字符串,增加了字符串出错的风险。
RTDatabase 尝试降低操作 sql 字符串时的风险,使用链式编程给出了一种解决方案。

  1. 为什么采用链式?
    具体实现方式请参考Object-C OC 实现链式调用
    以查询表为例子。
// 假设数据库中有名为 Person 的一张表,表中包含名为 age 和 gender 的 column。
NSString *selectSql = @"SELECT age, gender FROM Person where age = 18 and gender = male";

可以将 selectSql分为 SELECTage, genderFROM Personwhere age = 18 and gender = male四段。除去SELECT其他三段在查询操作中都是可变的。
如果是在swift中完全可以写成:

"SELECT" + " age, gender" + " FROM" + " Person" + " WHERE" + " age = 18" + " and" + "gender = male"

而且可以将SQLite的命令字符串写成常量,最多是注意下空格的问题。
但是在OC中,没有这样便捷的 +语法来处理字符串。所以这种先拆分,后顺序拼接组装的操作,选择链式的理由还是充分的。

  1. 用法
    源码都在RTDatabase中的以PP开头的文件中。
- (PPSQL *(^)(NSString *))CREATE;
- (PPSQL *(^)(NSString *))INSERT;
- (PPSQL *(^)(NSString *))UPDATE;
- (PPSQL *(^)(NSString *))DELETE;
- (PPSQL *)SELECT;

首先需要选择主句,RTDatabase提供了建表,插入,更新,删除,查询五中主句。

- (PPSQL *(^)(PPSQLSubBlock))subs;
- (PPSQL *(^)(PPSQLTermBlock))terms;

并且视子句需求,选择调用subs 或者terms
subs主要在需要column相关限定的时候调用,比如selectSql中跟在 SELECT后的表示查询目标 column 的age, gender
terms则是在like、GLOB、group By、Limit、Order By、Where时调用。

PPSQL *pp = [[PPSQL alloc] init];
NSString *sql = pp.SELECT.subs(^(id<PPSQLProtocol> sub) {
    sub.column(@"age").column(@"gender").from(@"Person");
}).terms(^(PPTerm *term) {
    term.where.equal(@"age", @(18)).equal(@"gender", @"male");
}).build;

-> sql =  @"SELECT age, gender FROM Person where age = 18 and gender = male";

相关文章

  • RTDatabase(2) SQL篇

    RTDatabase(1) 存储篇。 开发中涉及到字符串时,总有让人头疼的时候。毕竟字符串没有智能提示,只能硬码或...

  • RTDatabase (1) 存储篇

    RTDatabase(2) SQL篇。 最近公司任务不重, 有时间将自己之前所用到的知识总结下. 码农总结, 没有...

  • 每天一SQL语句(01):SQL 语句基础篇

    【开篇】SQL 语句基础篇 【前言】SQL 语法 1、SQL 注意事项 (1)SQL语句对大小写不敏感。 (2) ...

  • MySQL笔记

    MySQL 基础篇 一、SQL 1、SQL 通用语法 (1)SQL语句可以单行或多行书写,以分号结尾。 (2)SQ...

  • 小迪16期-20170226

    第二天:Sql注入集锦篇 1.Sql注入之access注入 2.Sql注入之mysql注入 3.Sql注入之mss...

  • Transact-SQL

    1. SQL语言 详见上一篇简书SQL基础知识 2. T-SQL语言概述 提供了标准的SQL命令提供类似C等第三代...

  • excel数据导出sql优化(一)

    excel数据导出sql优化分2篇,本文有sql优化篇 假设有A,B,C,D,E5张表,需要导出这5张表的部分信息...

  • MySQL闪回工具之binlog2sql

    一、binlog2sql 1.1 安装binlog2sql binlog2sql参数 MySQL server参数...

  • SQL 语法大全

    SQL 语法大全 标签(空格分隔): SQL DB2 SQL语法大全 SQL SELECT SQL SELECT ...

  • Sharding-Jdbc与MyCat区别

    上一篇 << >> 相同点:a、设计理念相同,主流程都是SQL解析-->SQL路由-->SQL改写-->SQL还行...

网友评论

      本文标题:RTDatabase(2) SQL篇

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