无法从CursorWindow中读取第0行,第-1列,错误。

我想从外部数据库中制作简单的recyclerview,但是应用程序崩溃了。 这是在logcat中。

无法从CursorWindow读取第0行,第1列。 在从Cursor访问数据之前,请确保Cursor被正确初始化。

数据库访问类。

public class DatabaseAccess {
    private SQLiteDatabase database;
    private SQLiteOpenHelper openHelper;
    private static DatabaseAccess instance;

    private DatabaseAccess (Context context) {
        this.openHelper = new MyDatabase(context);
    }

    public static DatabaseAccess getInstance(Context context) {
        if (instance == null) {
            instance = new DatabaseAccess(context);
        }
        return instance;
    }

    public void open() {
        this.database = this.openHelper.getWritableDatabase();
    }

    public void close() {
        if (this.database!= null) {
            this.database.close();
        }
    }

    public ArrayList<CAR> getAllCars() {
        ArrayList<CAR> cars = new ArrayList<>();
        Cursor cursor =  database.rawQuery(" SELECT * FROM " + MyDatabase.CAR_TB_NAME, null);
        if (cursor != null && cursor.moveToFirst()) {
            do {
                int id = cursor.getInt(cursor.getColumnIndex(MyDatabase.CAR_CLN_ID));
                String model = cursor.getString(cursor.getColumnIndex(MyDatabase.CAR_CLN_MODEL));
                String color = cursor.getString(cursor.getColumnIndex(MyDatabase.CAR_CLN_COLOR));
                double dpl = cursor.getDouble(cursor.getColumnIndex(MyDatabase.CAR_CLN_DPL));
                CAR c = new CAR(id,model,color,dpl);
                cars.add(c);
            }
            while (cursor.moveToNext());
            cursor.close();
        }
        return  cars;
    }
}

解决方案:

当我纠正了这部分代码后,错误就消失了。

int id = cursor.getInt(cursor.getColumnIndex(MyDatabase.CAR_CLN_ID));
            String model = cursor.getString(cursor.getColumnIndex(MyDatabase.CAR_CLN_MODEL));
            String color = cursor.getString(cursor.getColumnIndex(MyDatabase.CAR_CLN_COLOR));
            double dpl = cursor.getDouble(cursor.getColumnIndex(MyDatabase.CAR_CLN_DPL));

int id = cursor.getInt(0);
String model = cursor.getString(1);
String color = cursor.getString(2);
double dpl = cursor.getdouble(3);

给TA打赏
共{{data.count}}人
人已打赏
解决方案

在C语言编程中,如何在astof函数中找到数字之和?

2022-4-21 6:00:14

解决方案

如何用CSS替换PNG图片的颜色?[重复]

2022-4-21 7:00:10

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索