Я хотел бы сделать SQL-запрос и поместить его в TextView. Я могу сделать это для ListView, следуя инструкциям / примерам использования adapters / dbHelpers. Я получаю CursorIndexOutOfBoundException
, заставляет меня поверить, что я не правильно использую курсор.
Это код в onCreate:
TextView summaryTV = (TextView) findViewById(R.id.summary);
sumAllAmounts = iouHelper.getSumAllAmounts();
startManagingCursor(sumAllAmounts);
System.out.println(String.valueOf(iouHelper.getSumAllAmounts(sumAllAmounts)));
summaryTV.setText(String.valueOf(iouHelper.getSumAllAmounts(sumAllAmounts)));
sumAllAmounts
- это курсор, который возвращается помощником базы данных, выполняющим команду sql. Я знаю, что SQL-запрос правильный, потому что я проверил его, используя SQLite Database Browser
. И я могу заставить его работать на ListView
, используя ArrayAdapters
.
Запрос должен возвращать 2 столбца: идентификатор и количество. helper.getSumAllAmounts(Cursor)
вернет второй столбец Cursor.getInt(1)
и преобразуется в строку для отображения в TextView. TextView.setText(String.valueOf(int))
Пожалуйста, покажите мне, где я все испортила. Благодаря.
EDIT:
Code for DB helper function:
public Cursor getSumAllAmounts() {
return (getReadableDatabase().rawQuery("SELECT _id, SUM(amount) FROM ious", null));
}
public int getSumAllAmounts(Cursor c){
return (c.getInt(1));
}
Схема для БД:
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE ious (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, type TEXT, amount INT, description TEXT, date String);");
}