如何实现androidsqlite查询?

如何实现androidsqlite查询?,android,sqlite,Android,Sqlite,我正在使用以下代码搜索“English”列。还有一个专栏叫“孟加拉语”。我应该如何修改代码,以便同时搜索“ENGLISH”和“BANGLA”列并作为组合结果返回 public List<Bean> getWords(String englishWord) { if(englishWord.equals("")) return new ArrayList<Bean>(); String sql = "SELECT *

我正在使用以下代码搜索“English”列。还有一个专栏叫“孟加拉语”。我应该如何修改代码,以便同时搜索“ENGLISH”和“BANGLA”列并作为组合结果返回

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();
        }
    }
然而,这是行不通的。我得到这个错误:

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

您需要按如下方式移动订单并将其限制到末尾:

SELECT * FROM TABLE_NAME
WHERE ENGLISH LIKE ?
UNION ALL 
SELECT * FROM tull
WHERE BANGLA LIKE ?
ORDER BY ENGLISH LIMIT 100
但是,这将只按英文订购,最多100行。每种语言需要100行吗?如果要按这两种语言排序,可以为列添加别名,并按该别名排序:

SELECT *, ENGLISH AS TEXT FROM tull
WHERE ENGLISH LIKE ? OR BANGLA LIKE ?
UNION ALL 
SELECT *, BANGLA AS TEXT FROM tull
WHERE BANGLA LIKE "" 
ORDER BY TEXT LIMIT 100;

您仍然需要添加第二个selection参数,如注释中提到的jyanks。

这与中的不一样。您得到的确切错误是什么?可能你没有添加第二个选择参数吗
cursor=db.rawQuery(sql,新字符串[]{“%””+englishWord+“%”,“%””+englishWord+“%”})我正在获取我正在获取
wordList==null
。我按照建议添加了第二个selection参数,但仍然不起作用。错误是,
orderby子句应该出现在UNION之后,而不是前面(code 1)
谢谢。这解决了我的问题。
SELECT *, ENGLISH AS TEXT FROM tull
WHERE ENGLISH LIKE ? OR BANGLA LIKE ?
UNION ALL 
SELECT *, BANGLA AS TEXT FROM tull
WHERE BANGLA LIKE "" 
ORDER BY TEXT LIMIT 100;