2012-05-30 70 views
0

我已經有了Android搜索對話框,但是我遇到的問題是我有一個3列數據庫表,我想要搜索所有3列。下面的方法只執行上表中的1列的檢索:使用Android搜索對話框搜索多個數據庫列

//--- GET RECORDS FOR SEARCH 
public Cursor searchDB(String query) { 
    String[] allColumns = new String[]{ KEY_COLUMN1, KEY_COLUMN2, KEY_COLUMN3 }; 
    return db.query(true, DB_TABLE, new String[] { KEY_ROWID, 
      KEY_COLUMN1, KEY_COLUMN2, KEY_COLUMN3 }, KEY_COLUMN1 + " LIKE" + "'%" + query + "%'", null, null, null, null, null); 
} 
//--- END Get Records for Search 

所以,我試圖增加一個字符串數組,這樣的查詢:

//--- GET RECORDS FOR SEARCH 
public Cursor searchDB(String query) { 
    String[] allColumns = new String[]{ KEY_COLUMN1, KEY_COLUMN2, KEY_COLUMN3 }; 
    return db.query(true, DB_TABLE, new String[] { KEY_ROWID, 
      KEY_COLUMN1, KEY_COLUMN2, KEY_COLUMN3 }, allColumns + " LIKE" + "'%"  + query + "%'", null, null, null, null, null); 
} 
//--- END Get Records for Search 

但崩潰的應用程序。那麼如何修改方法來搜索三列(Column1,Column2和Column3)呢?

回答

5

可以是這樣做的(假設你想匹配至少一列的所有行):

public Cursor searchDB(String query) { 
    return db.query(true, DB_TABLE, new String[] { KEY_ROWID, KEY_COLUMN1, KEY_COLUMN2, 
    KEY_COLUMN3 }, KEY_COLUMN1 + " LIKE" + "'%" + query + "%' OR " + KEY_COLUMN2 + 
    " LIKE" + "'%" + query + "%' OR " + KEY_COLUMN3 + " LIKE" + "'%" + query + "%'", 
    null, null, null, null, null); 
} 
+0

甜!這是做到了 - 感謝巴拉克! – kirktoon1882

0

您需要通過「空」來代替「allColumns」。 這將檢索算法中的所有列的行

+0

傳遞null,導致搜索返回什麼。但我看到你要去哪裏...... – kirktoon1882

0
allColumns + " LIKE" + "'%"  + query + "%'" 

我想你需要嘗試這樣

column1 + " LIKE '%' AND "+column2  + " LIKE '%' AND " etc., 

注東西:有可能是語法錯誤。它是手工輸入的。

+0

我仍然在根據你的建議嘗試連擊。儘管如此,查詢不喜歡。所以我嘗試了KEY_COLUMN1 + KEY_COLUMN2 + KEY_COLUMN3 +「LIKE」+「'%」+ query +「%'」,這會導致應用程序崩潰。仍然在努力雖然..... – kirktoon1882