我的Android应用程序中有一个SQLite数据库。我希望能够根据数据库中的YEAR列选择一个随机行。我已经能够从整个表中选择一个随机行,像这样:Android SQLite选择参数
public String[] getTEST3RandChVerScrip() {
Cursor cursor = this.db.query("provtable Order BY RANDOM() LIMIT 1",
new String[] { KEY_MAKE, KEY_MODEL, KEY_NOTE }, null,
null, null, null, null);
if (cursor != null) {
for (cursor.moveToFirst(); !cursor.isAfterLast();) {
String colStrings[] = new String[3];
colStrings[0] = cursor.getString(0);
colStrings[1] = cursor.getString(1);
colStrings[2] = cursor.getString(2);
return colStrings;
}
}
return null;
}
但是当我尝试添加一个选择参数,应用程序出现了错误。这里就是我已经添加了选择参数:
public String[] getTEST3RandChVerScrip() {
Cursor cursor = this.db.query("provtable Order BY RANDOM() LIMIT 1",
new String[] { KEY_MAKE, KEY_MODEL, KEY_NOTE }, KEY_YEAR = "1964",
null, null, null, null);
if (cursor != null) {
for (cursor.moveToFirst(); !cursor.isAfterLast();) {
String colStrings[] = new String[3];
colStrings[0] = cursor.getString(0);
colStrings[1] = cursor.getString(1);
colStrings[2] = cursor.getString(2);
return colStrings;
}
}
return null;
}
是语法中KEY_YEAR = "1964"
不正确的?如果有的话,任何想法应该是什么?
按tyczj的答案,我已经修改了查询:
Cursor cursor = this.db.query("provtable Order BY RANDOM() LIMIT 1",
new String[] { KEY_MAKE, KEY_MODEL, KEY_NOTE }, KEY_YEAR + "=?",
new String[] {"1964"}, null, null, null);
...,我仍然得到一个错误,指出:06-20 15:18:33.644: E/AndroidRuntime(4758): android.database.sqlite.SQLiteException: near "WHERE": syntax error: , while compiling: SELECT make, model, note FROM provtable Order BY RANDOM() LIMIT 1 WHERE year=?
THANK YOU尼古拉斯你不应该把顺序靠!它的工作原理就是我希望它能够工作!我对SQLite相当陌生,并且知道我希望查询做什么,但是并没有完全明白参数在哪里以及如何在Android SQLite查询中编写它们。 – kirktoon1882