我想選擇數據庫中的一些數據,我有兩個代碼片做:selectionArgs兩個在SQLiteQueryBuilder不整數值列工作
cursor = builder.query(db,
new String[]{"col1", "col2", "col3"},
"id = ?", new String[]{getSID(db)}, null, null, null);
和
cursor = builder.query(db,
new String[]{"col1", "col2", "col3"},
"id = " + getSID(db), null, null, null, null);
它們之間的區別在於,根據文檔,第一個似乎更正確,但它也不起作用 - 遊標是空的。而不是第二個 - 我得到我需要的所有數據。
於是,我就用數據庫的副本我的電腦上執行不同的SQL查詢,這就是我的本錢:
SELECT col1, col2, col3 FROM SomeTables WHERE (id = '42')
這一個不工作(這顯然查詢等於查詢,由第一代碼樣品產生)
SELECT col1, col2, col3 FROM SomeTables WHERE (id = 42)
而這一工作正常(等於從第二個代碼示例查詢)。
據我所知,SQLite應該自動執行類型轉換,但出錯了,我不知道爲什麼。你有關於如何修正第一個代碼示例的任何想法嗎? (?或者,也許,數據庫)
如果它的事項,這裏的簡化CREATE
表的腳本id
領域:
CREATE TABLE SomeTable (ID PRIMARY KEY, col1, col2, [...])
UPD:而且,順便說一句,GETSID(DB)返回字符串目的。
在第一個查詢中,您傳遞'42'。 SQL執行程序將始終將其作爲字符串獲取,因此您不需要使用「'」(單引號)。你可以直接給予價值。如果您當時使用「like」,則需要單引號,否則就OK。 –