我使用以下方法用LIKE
语句查询我的SQLite数据库。
public List<Bean> getWords(String englishWord) {
if(englishWord.equals(""))
return new ArrayList<Bean>();
String sql = "SELECT * FROM " + TABLE_NAME +
" WHERE " + ENGLISH + " LIKE ? ORDER BY LENGTH(" + ENGLISH + ") LIMIT 100";
SQLiteDatabase db = initializer.getReadableDatabase();
Cursor cursor = null;
try {
cursor = db.rawQuery(sql, new String[]{"%" + englishWord.trim() + "%"});
List<Bean> wordList = new ArrayList<Bean>();
while(cursor.moveToNext()) {
String english = cursor.getString(1);
String mal = cursor.getString(2);
wordList.add(new Bean(english, bangla));
}
return wordList;
} catch (SQLiteException exception) {
exception.printStackTrace();
return null;
} finally {
if (cursor != null)
cursor.close();
}
}
我想更改上面的代码,因为它会查询完全匹配。我尝试修改代码如下,但我不知道如何获取mal
字符串。
public void getoneWords(String englishWord) {
String sql = "SELECT * FROM " + TABLE_NAME +
" WHERE " + ENGLISH + " =?";
SQLiteDatabase db = initializer.getReadableDatabase();
Cursor cursor = null;
try {
cursor = db.rawQuery(sql, new String[]{englishWord});
while(cursor.moveToNext()) {
String english = cursor.getString(1);
String mal = cursor.getString(2);
}
} finally {
if (cursor != null)
cursor.close();
}
}
答案 0 :(得分:0)
方法getoneWords
为什么。您应该在此功能中返回mal
和english
。
return new Bean(english, mal);
如果你需要第一个单词,只需要cursor.moveToFirst并删除while循环:
String english = cursor.getString(1);
String mal = cursor.getString(2);
return new Bean(english, mal);
答案 1 :(得分:0)
在getoneWords()
中,您没有返回查询的值。
由于您有两个返回值,您可能需要将它们包装在一对中,或者创建一个&#34; holder&#34;对象(例如class Words(String english, String mal)
)表示返回值。
如果您的Query返回多个匹配项,则需要返回这些对象的列表。否则,您的上述代码将返回最后一场比赛。
所以你需要改变你的函数来返回查询的
public Pair<String,String> getoneWords(String englishWord) {
Pair<String,String> result = null;
...
if(cursor.moveToNext()) {
String english = cursor.getString(1);
String mal = cursor.getString(2);
result = new Pair<String,String>(english, mal);
}
...
return result;
}
答案 2 :(得分:0)
我终于自己解决了这个问题。
public String getoneWords(String englishWord) {
String sql = "SELECT * FROM " + TABLE_NAME +
" WHERE " + ENGLISH + " =?";
SQLiteDatabase db = initializer.getReadableDatabase();
Cursor cursor = null;
String meaning = "";
try {
cursor = db.rawQuery(sql, new String[] {englishWord});
if(cursor.getCount() > 0) {
cursor.moveToFirst();
meaning = cursor.getString(2);
}
return meaning;
}finally {
cursor.close();
}
}