-1

我在我的 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 事件激活,然后显示在文本视图中

// 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

上面的代码中是否有任何错误,有人可以解释为什么它没有做我需要的。

谢谢

4

1 回答 1

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);
于 2013-07-25T15:22:44.827 回答