【问题标题】:Couldn't read row 0, col -1 from CursorWindow. error无法从 CursorWindow 读取第 0 行 col -1。错误
【发布时间】:2020-04-20 03:16:21
【问题描述】:

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

无法从 CursorWindow 读取第 0 行 col -1。确保 Cursor 在从中访问数据之前已正确初始化。

DatabaseAccess 类:

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;
    }
}

【问题讨论】:

    标签: java android database


    【解决方案1】:

    当我更正那部分代码时,错误消失了

    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);
    

    【讨论】:

      猜你喜欢
      • 2014-01-02
      • 1970-01-01
      • 1970-01-01
      • 2014-05-27
      • 2013-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多