我一直在尋找Android中的參數化查詢的接口/類,它有點混亂。
不是。
有人能說清楚什麼是數一數二的(最安全):
沒有,因爲你沒有定義你認爲是「最佳」的標準。
使用SQLiteDatabase.query() 使用SQLiteDatabase.rawQuery()
就個人而言,這些中,我使用rawQuery()
,因爲我發現它是最可讀的。恕我直言,query()
更適用於您試圖從單個部分(例如表名,列的列表)中構造SELECT語句的情況,因爲可能有些部分是可變的(例如,針對不同用戶的不同表)。在一天結束時,他們都做同樣的事情。 query()
使用SQLiteQueryBuilder
(見下文)。
()
使用SQLiteStatement 使用compileStatement這是同樣的事情。 SQLiteStatement
是Java被稱爲「類」的東西。 Java被稱爲「方法」的是compileStatement()
。 compileStatement()
方法返回SQLiteStatement
類的實例。
SQLiteStatement
對於查詢通常不是很有用,因爲它不能返回完整的結果集,除了單列/單行響應。
使用SQLiteQueryBuilder
這是建設從單件查詢的另一種方式。它適用於多方決定查詢內容的情況,例如ContentProvider
和該ContentProvider
的使用者。除此之外,最後它執行rawQuery()
。因此,直接使用SQLiteQueryBuilder
或使用rawQuery()
的結果沒有顯着差異。
()
使用managedQuery
這已被棄用,在任何情況下是不相關的SQLiteDatabase
。
使用ContentValues
這有什麼好做對抗SQLiteDatabase
查詢。
任何人都可以解釋爲什麼這麼多存在
一些服務於不同的角色,在具有無關針對SQLiteDatabase
查詢許多情況下。
對於你的名單(rawQuery()
,query()
和SQLiteQueryBuilder
)的三個有效的選項,他們都做同樣的事情:query()
使用SQLiteQueryBuilder
和SQLiteQueryBuilder
使用rawQuery()
。唯一的區別在於SQL SELECT
語句的構造方式。
非常感謝,現在它更清晰一點! – 2012-02-08 20:27:33