SQLite получить поле слот из строки 0 столбца 1 не удалось - PullRequest
1 голос
/ 08 февраля 2012

Я пытаюсь использовать базу данных SQLite для хранения некоторых данных для моего приложения.У меня есть это в моем классе DbHelper (который расширяет SqLiteOpenHelper)

// Database creation sql statement
private static final String DATABASE_CREATE = "create table "
        + jarsTable + "( "+colID+" integer primary key autoincrement, "+colName+" varchar(100), " +
        colGoal+" real not null, "+colBal+" real not null, "+colCurr+" varchar(100));";

public DbHelper(Context context) {
    super(context, dbName, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase database) {
    database.execSQL(DATABASE_CREATE);
}

И у меня есть это в моем классе DataSource

private Jar cursorToJar(Cursor cursor) {
    Jar myJar = new Jar();
    myJar.setId(cursor.getLong(0));
    myJar.setName(cursor.getString(1));
    myJar.setBalance(cursor.getDouble(2));
    myJar.setGoal(cursor.getDouble(3));
    myJar.setCurrency(cursor.getString(4));
    return myJar;
}

И я получаю ошибку, которую я упомянул взаголовок вопроса, который вылетает из приложения, когда он достигает строки myJar.setName выше.Я действительно немного сбит с толку относительно того, где я ошибся, я получаю строку, и моя таблица хранит поле в столбце 1, я думаю, так что ... да.Спасибо за помощь, заранее

РЕДАКТИРОВАТЬ: Вот мой метод населения:

public Jar createJar(String name, double goal, String currency) {
    ContentValues values = new ContentValues();
    values.put(DbHelper.colName, name);
    values.put(DbHelper.colGoal, goal);
    values.put(DbHelper.colCurr, currency);
    values.put(DbHelper.colBal, 0.0);
    long insertId = database.insert(DbHelper.jarsTable, null,
            values);
    Log.d("Insert ID:", ""+insertId);
    // To show how to query
    Cursor cursor = database.query(DbHelper.jarsTable,
            allColumns, DbHelper.colID + " = " + insertId, null,
            null, null, null);
    cursor.moveToFirst();
    return cursorToJar(cursor);
}

1 Ответ

5 голосов
/ 08 февраля 2012

Всегда используйте метод курсора getColumnIndex() для доступа к столбцам. Вот так:

myJar.setName(cursor.getString(cursor.getColumnIndex(colName)));

Не говорю, что это абсолютно проблема - поскольку вы еще не показали, как был заполнен Cursor, но это вероятно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...