RTDatabase(2) SQL篇

RTDatabase(1) 存儲(chǔ)篇渊跋。

開發(fā)中涉及到字符串時(shí)腊嗡,總有讓人頭疼的時(shí)候。畢竟字符串沒有智能提示拾酝,只能硬碼或者copy燕少。也出現(xiàn)過特別難debug的問題。
操作 sqlite3 時(shí)蒿囤,無可避免的要編輯很多字符串客们,增加了字符串出錯(cuò)的風(fēng)險(xiǎn)。
RTDatabase 嘗試降低操作 sql 字符串時(shí)的風(fēng)險(xiǎn)蟋软,使用鏈?zhǔn)骄幊探o出了一種解決方案镶摘。

  1. 為什么采用鏈?zhǔn)剑?br> 具體實(shí)現(xiàn)方式請參考Object-C OC 實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用嗽桩。
    以查詢表為例子岳守。
// 假設(shè)數(shù)據(jù)庫中有名為 Person 的一張表,表中包含名為 age 和 gender 的 column碌冶。
NSString *selectSql = @"SELECT age, gender FROM Person where age = 18 and gender = male";

可以將 selectSql分為 SELECT湿痢、age, genderFROM Person扑庞、where age = 18 and gender = male四段譬重。除去SELECT其他三段在查詢操作中都是可變的。
如果是在swift中完全可以寫成:

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

而且可以將SQLite的命令字符串寫成常量罐氨,最多是注意下空格的問題臀规。
但是在OC中,沒有這樣便捷的 +語法來處理字符串栅隐。所以這種先拆分塔嬉,后順序拼接組裝的操作玩徊,選擇鏈?zhǔn)降睦碛蛇€是充分的。

  1. 用法
    源碼都在RTDatabase中的以PP開頭的文件中谨究。
- (PPSQL *(^)(NSString *))CREATE;
- (PPSQL *(^)(NSString *))INSERT;
- (PPSQL *(^)(NSString *))UPDATE;
- (PPSQL *(^)(NSString *))DELETE;
- (PPSQL *)SELECT;

首先需要選擇主句恩袱,RTDatabase提供了建表,插入胶哲,更新畔塔,刪除,查詢五中主句鸯屿。

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

并且視子句需求澈吨,選擇調(diào)用subs 或者terms
subs主要在需要column相關(guān)限定的時(shí)候調(diào)用碾盟,比如selectSql中跟在 SELECT后的表示查詢目標(biāo) column 的age, gender棚辽。
terms則是在like、GLOB冰肴、group By屈藐、Limit、Order By熙尉、Where時(shí)調(diào)用联逻。

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";
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末检痰,一起剝皮案震驚了整個(gè)濱河市包归,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌铅歼,老刑警劉巖公壤,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異椎椰,居然都是意外死亡厦幅,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門慨飘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來确憨,“玉大人,你說我怎么就攤上這事瓤的⌒萜” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵圈膏,是天一觀的道長塔猾。 經(jīng)常有香客問我,道長稽坤,這世上最難降的妖魔是什么丈甸? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任医增,我火速辦了婚禮,結(jié)果婚禮上老虫,老公的妹妹穿的比我還像新娘叶骨。我一直安慰自己,他們只是感情好祈匙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布忽刽。 她就那樣靜靜地躺著,像睡著了一般夺欲。 火紅的嫁衣襯著肌膚如雪跪帝。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天些阅,我揣著相機(jī)與錄音伞剑,去河邊找鬼。 笑死市埋,一個(gè)胖子當(dāng)著我的面吹牛黎泣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缤谎,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼抒倚,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了坷澡?” 一聲冷哼從身側(cè)響起托呕,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎频敛,沒想到半個(gè)月后项郊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡斟赚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年着降,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汁展。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鹊碍,死狀恐怖厌殉,靈堂內(nèi)的尸體忽然破棺而出食绿,到底是詐尸還是另有隱情,我是刑警寧澤公罕,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布器紧,位于F島的核電站,受9級特大地震影響楼眷,放射性物質(zhì)發(fā)生泄漏铲汪。R本人自食惡果不足惜熊尉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望掌腰。 院中可真熱鬧狰住,春花似錦、人聲如沸齿梁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽勺择。三九已至创南,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間省核,已是汗流浹背稿辙。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留气忠,地道東北人邻储。 一個(gè)月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像旧噪,于是被迫代替她去往敵國和親芥备。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容