Извлечение данных из нескольких определенных столбцов из таблицы SQLite - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь получить данные из нескольких определенных столбцов таблицы в 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.Моя цель - извлечь значение в столбце «бюджет» в «сумму» и значение в столбце «еда и напитки» в «сумму».

Ниже мой метод "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";

1 Ответ

0 голосов
/ 25 октября 2018

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

, измените

myDb.getLatestAmount(id, temp_category);

на

latestamount = myDb.getLatestAmount(id, temp_category);

Таким образом, ваш код должен выглядеть следующим образом

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";
// the line below is what you needed to change
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_foodndrinks = latestamount.getDouble(0);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...