2016-06-08 166 views
0

我在sqlite中有一個包含4列(id,group,description,status)的表。 我可以讓查詢在此表時,我的where子句僅僅是一個領域,像這樣:sqlite中的多參數查詢

public Question readQuestion(long _id) {String[] columns = new String[]{"id", "group", "description", "status"}; 
    String selection = "id=?"; 
    String[] selectionArgs = new String[]{String.valueOf(_id)}; 
    String groupBy = null; 
    String having = null; 
    String orderBy = null; 
    String limit = null; 
    database = sqLiteOpenHelper.getWritableDatabase(); 
    Cursor cursor = database.query("my_table", columns, selection, selectionArgs, groupBy, having, orderBy, limit); 
    .......etc..... 
} 

但我的問題是,當我必須做2個或3列的查詢,也一兩個人可能爲NULL。例如,當我的GROUP字段serch與(A,B或null)和狀態搜索(1,2或null)。我認爲這是在'選擇'和'選擇args',但我不知道如何能夠確定它。 在此先感謝。

回答

1

你可以試試這個。

String selection = "(id=? || id=? || id=?) && (status =? || status=? || status=?)"; 
String[] selectionArgs = new String[]{"1","2",null,"A","B",null}; 

或者

String selection = "id IN (?,?,?) && status IN (? ,? ,?)"; 
String[] selectionArgs = new String[]{"1","2",null,"A","B",null}; 
+0

感謝您的快速回復,它的工作原理,但我有2個問題, – Beppe

+0

啊..編輯在烏拉圭回合的問題是自我 – Sush

+0

感謝您的快速回復,它的工作原理,但我有2個更多的問題,1:有沒有什麼辦法,我在selectionArgs中傳遞null,查詢不查找該字段?我已經在存儲過程中的SQL服務器上完成了它:/ @ status int = NULL,並在SQL語法中,我通過它:((/ @狀態爲空)或(狀態=/@狀態))。?和2: where子句中的每個選擇的值的數量是可變的,有時是1,有時是2,有時是3等,如何選擇它?我可以解析輸入取決於長度,並作出一個字符串,但有沒有更好的和動態的方式?非常感謝。 – Beppe