我在DBAdapter.java文件中使用以下代码从单列中选择值
// Get make column from DB
public Cursor getMakeCol() {
String selectCol = "SELECT KEY_MAKE FROM " + DATABASE_TABLE;
Cursor c = db.query(DATABASE_TABLE, new String[]{KEY_MAKE}, selectCol, null,
null,null,null,null);
if (c != null) {
c.moveToFirst();
}
return c;
}
这就是我试图在main.java中使用getMakeCol的方法
// Display make recordset from database inside textview
private void displayMake(Cursor cursor) {
String message = "";
// populate the message from the cursor
// Reset cursor to start, checking to see if there's data:
if (cursor.moveToFirst()) {
do {
String make = cursor.getString(DBAdapter.COL_MAKE);
// Append data to the message:
message += "Make: " + make + "\n";
} while(cursor.moveToNext());
}
// Close the cursor to avoid a resource leak.
cursor.close();
displayText(message);
}
这是由onClick事件激活,然后显示在textview
中// display column data
public void btnGetColClick(View v) {
Cursor cursor = myDb.getMakeCol();
displayMake(cursor);
}
然而,当我调试应用程序并激活onClick事件时,logcat显示以下内容
07-25 16:11:58.300: E/SQLiteLog(1738): (1) near "SELECT": syntax error
上述代码中是否有任何错误,有人可以解释为什么它没有做我需要的。
谢谢
答案 0 :(得分:1)
您以错误的方式使用db.query
Cursor cursor = db.query(DATABASE_TABLE, new String[]{KEY_MAKE}, null, null, null);
应该等于SELECT KEY_MAKE FROM DATABASE_TABLE
如果要过滤表,请使用where子句的第三个参数
String whereClause = "id=? AND group_id=?";
String[] args = new String[]{"1", "2"}; //some example data
Cursor cursor = db.query(DATABASE_TABLE, new String[]{KEY_MAKE}, whereClause, args, null);