Android SQLite,尝试从单个数据库列获取数据时出现语法错误

时间:2013-07-25 15:14:24

标签: java android database sqlite

我在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

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

谢谢

1 个答案:

答案 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);