android原始sqlite中query的複雜用法?

Tags: 用法,

android直接執行sql是execSQL(String sql)。

這個方法可以執行任意sql語句。但是改變這個不夠靈活。

query這個方法可以很好的解決這個問題。

執行query查詢指定的數據表返回一個帶遊標的數據集

工具/原料

編譯工具:Eclipse

方法/步驟

因為只是介紹一個sqlite的方法,我們這裡就不解釋項目結構什麼的。

建表等我們也不說了。

(Cursor) query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)

現在對參數的解釋

String table: 要查詢的那個表

String[] columns: 返回那一列,如果參數是null,則返回所有列。

(不過不推薦這個樣子)

String selection: 返回那一行的過濾器。

(格式是SQL的WHERE,設置為null,返回這個table的所有行)

android原始sqlite中query的複雜用法

String[] selectionArgs: 在selection字段中可能會用'?'的形式來加一些額外的參數。

String groupBy: 一個過濾器,如何來分組。(設置為null則不分組)

android原始sqlite中query的複雜用法

String having: 分組後聚合的過濾條件。(作用和sql語句的having作用一樣)

String orderBy: 排序,格式是SQL的ORDER一樣。

(設置null使用默認(無序unonder)排列。)

android原始sqlite中query的複雜用法

String limit: 返回的行數,設置為null表示沒有限制條款。

例子如下圖:

android原始sqlite中query的複雜用法

query返回一個Cursor。

針對遊標(Cursor)也提供了不少方法

getCount():總記錄條數

isFirst():判斷是否第一條記錄

isLast():判斷是否最後一條記錄

moveToFirst():移動到第一條記錄

moveToLast():移動到最後一條記錄

move(int offset):移動到指定的記錄

moveToNext():移動到嚇一條記錄

moveToPrevious():移動到上一條記錄

getColumnIndex(String columnName):獲得指定列索引的int類型值

android原始sqlite中query的複雜用法

sql語句中聚合函數的編寫為例如:SUM, COUNT, MAX, AVG等。這些函數和其它函數的根本區別就是它們一般作用在多條記錄上。 SELECT SUM(population) FROM bbc

android原始sqlite中query的複雜用法

sql語句中having是分組(group by)後的篩選條件,分組後的數據組內再篩選where則是在分組前篩選。

通過使用GROUP BY 子句,可以讓SUM 和 COUNT 這些函數對屬於一組的數據起作用。

HAVING子句可以讓我們篩選成組後的各組數據。 WHERE子句在聚合前先篩選記錄。也就是說作用在GROUP BY 子句和HAVING子句前。而 HAVING子句在聚合後對組記錄進行篩選。

注意事項

這次我沒有項目來舉例,只是以部分片段做舉例,展示用法。

這個經驗只是說明這個方法中多個參數的意思,這幾個參數對應sql語句那幾個部分。

相關問題答案