2016-04-06 24 views
0

爲什麼選擇參數僅適用於RawQuery中的where子句,而不適用於例如from子句中?爲什麼選擇參數僅適用於RawQuery中的where子句?

我在問這是因爲在「from子句」中,可能與「where子句」中的內容相同,例如使用連接時。

SELECT table1.field_x, table2.field_y FROM table1 
LEFT OUTER JOIN table2 ON table1.field_x = table2.field_z AND table2.language =? 
WHERE table1.language=? 

我想作一個Rawquery這樣的:

RawQuery("SELECT table1.field_x, table2.field_y FROM table1 
LEFT OUTER JOIN table2 ON table1.field_x = table2.field_z AND table2.language =? 
WHERE table1.language=?", 
new String[] {language, language} 

它不給一個語義錯誤,也不是一個編譯錯誤,但它不是在執行時的工作。

+0

您可以發佈您使用它的代碼嗎?你的代碼對我來說似乎很好 – Pooya

+1

請解釋一下「不工作」對你意味着什麼。 – laalto

+0

@laalto,我的意思是[table2.language =?]中的問號不會被{language,language}中的一個變量替換。這不是一個錯誤,但我想知道爲什麼。 –

回答

-1

爲什麼選擇論只適用於在WHERE子句中RawQuery而不是

選擇參數並不適用於rawQuery,它適用於查詢。

使用String數組參數創建rawQuery的最簡單方法,就像使用參數創建新的StringBuffer/StringBuilder對象並在SB中添加字符串一樣。

對於rawQuery("select DISTINCT tbl_name from sqlite_master where tbl_name = '" + tableName + "'", null)

+0

您可以使用'rawQuery()'的變量綁定。 – laalto