使用SQLite和android选择Where



嘿,我目前有两个函数,一个将整个数据库打印为字符串,另一个应该只在数据库的"TODO"列中满足条件时获取数据,如下所示。

     public String databaseToString() {
    String dbString = "";
    SQLiteDatabase db = getWritableDatabase();
    String query = "SELECT * FROM " + TABLE_LIST + " WHERE 1";
    //Cursor points to a location in your results
    Cursor c = db.rawQuery(query, null);
    //Move to the first row in your results
    c.moveToFirst();
    //Position after the last row means the end of the results
    while (!c.isAfterLast()) {
        if (c.getString(c.getColumnIndex("ToDo")) != null) {
            dbString += c.getString(c.getColumnIndex("ToDo"));
            dbString += " ";
            dbString += c.getString(c.getColumnIndex("accFor"));
            dbString += "n";
        }
        c.moveToNext();
    }
    db.close();
    return dbString;
}

这是工作函数的代码,它将整个数据库转换为要打印的字符串。下面是一个不起作用的函数,它应该从数据库中获取所有值,其中TODO等于字符串university,我在mydatabasemanager应用程序中进一步调用了它,该应用程序包含这两个函数

 public String UniversityToString() {
    String dbString = "";
    SQLiteDatabase db = getWritableDatabase();
    String query = ("SELECT " + COLUMN_TODO + COLUMN_FOR + " FROM " + TABLE_LIST + " WHERE "+ COLUMN_FOR + "="" + University + "";");
    //Cursor points to a location in your results
    Cursor c = db.rawQuery(query, null);
    //Move to the first row in your results
    c.moveToFirst();
    //Position after the last row means the end of the results
    while (!c.isAfterLast()) {
        if (c.getString(c.getColumnIndex("ToDo")) != null) {
            dbString += c.getString(c.getColumnIndex("ToDo"));
            dbString += " ";
            dbString += c.getString(c.getColumnIndex("accFor"));
            dbString += "n";
        }
        c.moveToNext();
    }
    db.close();
    return dbString;
}

这里的代码导致我的应用程序在打开调用它的活动时崩溃。我只是想知道如何解决这个问题,以正确选择我需要的数据。

查询中的两列之间至少应该有一些内容。

COLUMN_TODO + ", " COLUMN_FOR

您也不需要添加;在查询字符串的末尾

最新更新