【发布时间】:2020-09-01 21:47:42
【问题描述】:
我想从数据库中选择与名称不匹配的名称,该名称已存在。
使用此代码,抛出错误:No such table
public String getRandomAnswer(String correctName){
String randomAnswer;
mDbHelper.initializeDataBase();
try {
mDb = mDbHelper.getWritableDatabase();
String sql = "SELECT Name FROM Cities WHERE Name NOT LIKE " + correctName + " ORDER BY Random() LIMIT 1 ";
Cursor c = mDb.rawQuery(sql, null);
if (c != null) {
if (c.moveToFirst()) {
randomAnswer = c.getString(c.getColumnIndex("Name"));
return randomAnswer;
}
c.close();
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
mDbHelper.close();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
mDb.close();
}
}
return null;
}
但如果我直接输入String sql = "SELECT Name FROM Cities WHERE Name NOT LIKE 'someOtherName' ORDER BY Random() LIMIT 1 ";
比它的作品,但它不是我想要的。
【问题讨论】:
-
对查询中的值使用参数而不是字符串连接。
-
@stickybit 如果我理解正确:
Cursor c = mDb.query("Cities", new String[] {"Name"},"Name NOT LIKE ?", new String[]{correctName}, null, null, "Random()", String.valueOf(1));
标签: java sql sqlite android-studio syntax