如何在 Tasker 上操作 SQLite 數(shù)據(jù)庫

前言

使用 Tasker 的您是否曾想過這些需求卻無法實(shí)現(xiàn):讀取或刪除指定聯(lián)系人的所有短信記錄逗余;將當(dāng)前最新的圖片或視頻分享出去;或者是更高級的:創(chuàng)建自己的數(shù)據(jù)庫以用于數(shù)據(jù)的存儲與查詢坯钦?如果您是苦于無法實(shí)現(xiàn)的那位揩懒,那么當(dāng)閱讀過本文后,將令您不再糾結(jié);如果您是早已實(shí)現(xiàn)的那位拦赠,那么本文也值得您閱讀,因?yàn)楫?dāng)中有些內(nèi)容或許對您有所啟發(fā)葵姥。本文并不打算講授 SQL 的知識(初學(xué)者若想學(xué)習(xí) SQL荷鼠,不妨從這本書開始),而是直接說明如何在 Tasker 上操作 SQLite 數(shù)據(jù)庫榔幸。本文所有的數(shù)據(jù)庫操作示例都是基于 Android 的短信系統(tǒng)數(shù)據(jù)庫(已將其拷貝至 /sdcard/Download/mmssms.db)允乐,接下來首先要介紹的是最常用的數(shù)據(jù)庫操作 ── 查詢。

查詢操作

要查詢的內(nèi)容是:最近三條聯(lián)通發(fā)送的內(nèi)容包含「驗(yàn)證碼」的短信記錄(只需要短信的接收時(shí)間削咆、發(fā)送方和內(nèi)容)牍疏。

下圖是從數(shù)據(jù)庫管理工具 SqlitePrime 中得到的 sms 表結(jié)構(gòu),可幫助大家理解后續(xù)出現(xiàn)的 SQL 語句拨齐。

sms 表

以下為滿足上述查詢要求的 SQL 語句(其中的 date鳞陨、address 與 body 分別是短信的接收時(shí)間、發(fā)送方以及內(nèi)容):

SELECT date, address, body
FROM sms
WHERE address = 10010 AND body LIKE '%驗(yàn)證碼%'
ORDER BY date DESC LIMIT 3

在 SqlitePrime 中執(zhí)行該 SQL 語句后可查詢出滿足要求的結(jié)果瞻惋,見下圖:

那么該如何從 Tasker 中獲得相同的查詢結(jié)果呢厦滤?接下來,將分別使用 Tasker 內(nèi)置動作「SQL Query(SQL 查詢)」中的三種模式來實(shí)現(xiàn)這需求歼狼。

  • 原始模式(Raw)

    文件(File):指定的數(shù)據(jù)庫文件掏导。若路徑以 / 開頭,則表示為絕對路徑羽峰,否則為根目錄是 sdcard 的相對路徑趟咆。
    查詢(Query):完整的 SQL 語句。其中的篩選條件(Where 指令)可設(shè)置 ? 占位符梅屉。
    篩選參數(shù)(Selection Parameters):用于設(shè)置篩選條件 ? 占位符的具體內(nèi)容值纱,需按照占位符的出現(xiàn)順序來設(shè)置。
    輸出列分隔符(Output Column Divider):可自定義結(jié)果集中每一行的各列之間的分隔符履植,若未設(shè)置计雌,則默認(rèn)以「,」(逗號)進(jìn)行分隔。
    數(shù)組變量(Variable Array):查詢出來的結(jié)果會以每個(gè)索引一行的方式存儲在指定的數(shù)組中玫霎。

  • Formatted 模式(Formatted)

    (Table):要查詢的表
    (Columns):要查詢的字段
    篩選(Selection):篩選條件
    排序(Order By):排序內(nèi)容

    注:文件以及篩選參數(shù)項(xiàng)與「原始模式」相同

  • URI 模式(URI Formatted)

    URI:由 URI 指定的特定的凿滤,而非數(shù)據(jù)庫。上圖中的 content://sms/inbox 等價(jià)于「Formatted 模式」 File + Table 的內(nèi)容庶近,即 mmssms.db 的 sms 表翁脆。

    注:其余項(xiàng)與「Formatted 模式」相同

說明:

  • 以上三種模式都可以查詢出相同的結(jié)果,只是構(gòu)建的方式有所不同鼻种。雖說三種模式反番,但其基本可歸為兩大類型,即文件URI“崭祝「原始模式」和「Formatted 模式」都屬于文件類型篙贸,而「URI 模式」屬于 URI 類型
  • 「原始模式」和「Formatted 模式」都是對數(shù)據(jù)庫文件進(jìn)行查詢,只是「Formatted 模式」是將「原始模式」中完整的 SQL 語句格式化為多個(gè)參數(shù)項(xiàng)枫疆,這樣可省去一些 SQL 指令爵川,如 SELECT、WHERE 與 ORDER BY息楔。這二者模式可互相轉(zhuǎn)換
  • 文件類型的模式也可對系統(tǒng)數(shù)據(jù)庫文件進(jìn)行查詢寝贡,但需要設(shè)備處于已 Root 狀態(tài),使用時(shí)還需要勾選「使用 Root」選項(xiàng)
  • 「URI 模式」可對指定的表進(jìn)行查詢值依,無需 Root 便可對某些系統(tǒng)數(shù)據(jù)庫進(jìn)行查詢圃泡,如短信數(shù)據(jù)庫、圖片(視頻)數(shù)據(jù)庫等

其他數(shù)據(jù)庫操作

「SQL 查詢」動作除了可以查詢數(shù)據(jù)外愿险,還可以對數(shù)據(jù)庫進(jìn)行以下的寫入操作(只能在「原始模式」中使用):

  • 插入數(shù)據(jù):INSERT INTO
  • 更新數(shù)據(jù):UPDATE
  • 刪除數(shù)據(jù):DELETE FROM
  • 創(chuàng)建表:CREATE TABLE
  • 更新表:ALTER TABLE

下圖的 SQL 語句將會刪除所有聯(lián)通發(fā)送的短信記錄:

注:目前「SQL 查詢」動作無法直接刪除表颇蜡,若要實(shí)現(xiàn)這操作,可參看這文章中的刪除表部分拯啦。

進(jìn)階操作

上面涉及的是已經(jīng)存在的數(shù)據(jù)庫澡匪,那么我想創(chuàng)建屬于自己的數(shù)據(jù)庫,并對其進(jìn)行數(shù)據(jù)的存儲與讀取褒链,可以實(shí)現(xiàn)嗎?當(dāng)然可以疑苔,您若想了解這部份操作甫匹,請參看這文章

實(shí)際應(yīng)用

簡單列舉一些可通過數(shù)據(jù)庫實(shí)現(xiàn)的功能:

  • 查詢最新的圖片(視頻)
  • 刪除特定的短信記錄
  • 存儲剪貼板記錄(進(jìn)階操作)
  • 可將那些不想存儲到系統(tǒng)通訊錄的聯(lián)系人惦费,改為存儲到自建數(shù)據(jù)庫中(進(jìn)階操作)
  • ...

更新日志

  • 10/5/2018
    - 發(fā)布

其他

作者:sung
郵箱:sdfsung@gmail.com

原創(chuàng)內(nèi)容兵迅,轉(zhuǎn)載請注明出處

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市薪贫,隨后出現(xiàn)的幾起案子恍箭,更是在濱河造成了極大的恐慌,老刑警劉巖瞧省,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扯夭,死亡現(xiàn)場離奇詭異,居然都是意外死亡鞍匾,警方通過查閱死者的電腦和手機(jī)交洗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來橡淑,“玉大人构拳,你說我怎么就攤上這事。” “怎么了置森?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵斗埂,是天一觀的道長。 經(jīng)常有香客問我凫海,道長蜜笤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任盐碱,我火速辦了婚禮把兔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瓮顽。我一直安慰自己县好,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布暖混。 她就那樣靜靜地躺著缕贡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拣播。 梳的紋絲不亂的頭發(fā)上晾咪,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機(jī)與錄音贮配,去河邊找鬼谍倦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛泪勒,可吹牛的內(nèi)容都是我干的昼蛀。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼圆存,長吁一口氣:“原來是場噩夢啊……” “哼叼旋!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起沦辙,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤夫植,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后油讯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體详民,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年撞羽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了阐斜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡诀紊,死狀恐怖谒出,靈堂內(nèi)的尸體忽然破棺而出隅俘,到底是詐尸還是另有隱情,我是刑警寧澤笤喳,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布为居,位于F島的核電站,受9級特大地震影響杀狡,放射性物質(zhì)發(fā)生泄漏蒙畴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一呜象、第九天 我趴在偏房一處隱蔽的房頂上張望膳凝。 院中可真熱鬧,春花似錦恭陡、人聲如沸蹬音。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽著淆。三九已至,卻和暖如春拴疤,著一層夾襖步出監(jiān)牢的瞬間永部,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工呐矾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留苔埋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓凫佛,卻偏偏與公主長得像讲坎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子愧薛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344