Вопрос:

Извлечение данных из нескольких конкретных столбцов из таблицы SQLite

android sqlite multiple-columns database-cursor

15 просмотра

1 ответ

22 Репутация автора

Я пытаюсь получить данные из нескольких конкретных столбцов таблицы в SQLite, но с приведенным ниже кодом, я не уверен, почему, но вместо того, чтобы получать данные из двух разных столбцов, он просто получает данные из самого первого столбца, который я поставил в моем методе, который является «бюджетным» столбцом таблицы «расходы»:

        String temp_category = "budget";
        Cursor latestamount = myDb.getLatestAmount(id, temp_category);
        if (latestamount.getCount() == 0) {
            Toast.makeText(AddExpenses.this, "No amount found !", Toast.LENGTH_LONG).show();
        } else {
            latestamount.moveToFirst();
            amountfromdb_budget = latestamount.getDouble(0);
        }

        temp_category = "foodndrinks";
        myDb.getLatestAmount(id, temp_category);
        if (latestamount.getCount() == 0) {
            Toast.makeText(AddExpenses.this, "No amount found !", Toast.LENGTH_LONG).show();
        } else {
            latestamount.moveToFirst();
            amountfromdb_foodndrinks = latestamount.getDouble(0);
        }

Используя вышеприведенный код, мои «amountfromdb_budget» и «amountfromdb_foodndrinks» будут вставлены со значением в столбце «бюджет» моего SQLite. Моя цель - получить значение в столбце «бюджет» в «amountfromdb_budget» и значение в столбце «foodndrinks» в «amountfromdb_foodndrinks».

Ниже мой метод getLatestAmount в моем классе DatabaseHelper: -

    public Cursor getLatestAmount(String id, String category) {
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor latestamount = db.rawQuery("SELECT "+category+" FROM spendings WHERE id =" +id , null);
        return latestamount;
    }

И структура моей таблицы «расходов» ниже: -

    private static final String SPENDING_TABLE = "spendings";
    private static final String ID_SPENDING = "id";
    private static final String BUDGET = "budget";
    private static final String TOTAL_EXPENSES = "total_expenses";
    private static final String FOODNDRINKS = "foodndrinks";
    private static final String TRAVEL = "travel";
    private static final String SHOPPING = "shopping";
    private static final String ENTERTAINMENT = "entertainment";
    private static final String OTHERS = "others";
    private static final String BALANCE = "balance";
Автор: shz1998 Источник Размещён: 25.10.2018 11:23

Ответы (1)


0 плюса

767 Репутация автора

Вы не перезаписывали курсор из того, когда вы получили сумму для питья n напитков. Таким образом, вы все еще работаете с курсором бюджета. Таким образом сохранить результат от getLatestAmountдо latestamount.

менять

myDb.getLatestAmount(id, temp_category);

в

latestamount = myDb.getLatestAmount(id, temp_category);
Автор: noyanc Размещён: 25.10.2018 11:38
Вопросы из категории :
32x32