android - SQLite 从第 0 行第 1 列获取字段槽失败

标签 android database sqlite cursor

我正在尝试使用 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);
}

最佳答案

始终使用游标的 getColumnIndex() 方法访问列。像这样:

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

并不是说那是绝对的问题——因为您还没有展示如何填充Cursor——但很有可能。

关于android - SQLite 从第 0 行第 1 列获取字段槽失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9186514/

相关文章:

php - MySQL 仅当该记录的日期时间列数据发生更改时才更新该数据

sql - 计算字段中的默认值

java - 保存一些数据 sqlite、SharedPreferences 或文件?

ios - 如何在 iOS 应用程序中连接 FMDB 中两个不同数据库的两个表

ScrollView 中的 Android 和按钮

java - 按下时更改按钮颜色

mysql - 如何获取来自同一属性的一些表值的平均值

sql - 在数据库中存储神经网络的最佳实践

android - ExifInterface 构造函数抛出 IOExxception

android - 服务器需要连接设置更新android studio