0
我正在使用以下代碼來搜索「英文」列。還有另一個欄目叫做「BANGLA」。我應該如何修改代碼,以便同時搜索「ENGLISH」和「BANGLA」列並作爲組合結果返回?如何實現Android Sqlite Union rawQuery?
public List<Bean> getWords(String englishWord) {
if(englishWord.equals(""))
return new ArrayList<Bean>();
String sql = "SELECT * FROM " + TABLE_NAME +
" WHERE " + ENGLISH + " LIKE ? ORDER BY " + ENGLISH + " LIMIT 100 ";
SQLiteDatabase db = initializer.getReadableDatabase();
Cursor cursor = null;
try {
cursor = db.rawQuery(sql, new String[]{"%" + englishWord + "%"});
List<Bean> wordList = new ArrayList<Bean>();
while(cursor.moveToNext()) {
int id = cursor.getInt(0);
String english = cursor.getString(1);
String bangla = cursor.getString(2);
String status = cursor.getString(3);
wordList.add(new Bean(id, english, bangla, status));
}
return wordList;
} catch (SQLiteException exception) {
exception.printStackTrace();
return null;
} finally {
if (cursor != null)
cursor.close();
}
}
我體改的String sql
到
String sql = "SELECT * FROM " + TABLE_NAME +
" WHERE " + ENGLISH + " LIKE ? ORDER BY " + ENGLISH + " LIMIT 100 " + " UNION ALL " + " SELECT * FROM " + TABLE_NAME +
" WHERE " + BANGLA + " LIKE ? ORDER BY " + ENGLISH + " LIMIT 100";
但是,這是行不通的。我收到此錯誤:
ORDER BY clause should come after UNION ALL not before (code 1): , while compiling: SELECT * FROM words WHERE en_word LIKE ? ORDER BY en_word LIMIT 100 UNION ALL SELECT * FROM words WHERE bn_word LIKE ? ORDER BY en_word LIMIT 100
這不起作用? – e4c5
你得到了什麼確切的錯誤?難道你沒有添加第二個選擇參數? 'cursor = db.rawQuery(sql,new String [] {「%」+ englishWord +「%」,「%」+ englishWord +「%」});' – jyanks
我越來越'wordList == null 。我按照建議添加了第二個選擇參數,但仍然無效。 – user2872856