Курсор не дает никакого ответа - PullRequest
0 голосов
/ 02 июня 2019

Я хочу сделать SQLite-DB функцией, которая бы собирала информацию об одной записи, не дает никакого ответа.(Просто чтобы упомянуть, я новичок)

public Infopw getInfo(int id) {
    SQLiteDatabase db = this.getReadableDatabase();
    String selectQuery = "SELECT * FROM " + TABLE_ACCOUNTS+" WHERE " + 
           COLUMN_ID + " = "+id+";";
    Infopw in = new Infopw();
    Cursor cursor = db.rawQuery(selectQuery, null);
    if (cursor != null) {
        String s = "w";
        if (cursor.moveToFirst()) {
            s =cursor.getString(cursor.getColumnIndex(COLUMN_SERVER));
        }
        cursor.close();

        Log.d(TAG ,s);
    }

    return in;
}

Это мой код, но он ничего не делает, и в лог-сообщении выводится «w», а не cursor.getString(cursor.getColumnIndex(COLUMN_SERVER)); Я пытался выполнить 2 условия if в одном, но это тот же результат.

1 Ответ

0 голосов
/ 02 июня 2019

Не добавляйте последнюю точку с запятой в rawQuery.

Вы должны использовать объект курсора следующим образом.

Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor != null) {
    String s = "w";
    while (cursor.moveToNext()) { //use while and not if, to get all the rows
        s =cursor.getString(cursor.getColumnIndex(COLUMN_SERVER));
    }
    //cursor.close();   Don't close it when the data is still being fetched

    Log.d(TAG ,s);
}
cursor.close(); //You can close it now after data is fetched
...