CursorIndexOutOfBoundsException:

时间:2017-04-03 13:09:54

标签: android android-sqlite

我是android新手我试图获取与特定列值相关的游标值。但它显示为null。

 public int getDashBoardCount() {
    String countQuery = "SELECT * FROM " + DASHBOARD_TABLE + " WHERE " + VECHICAL_TYPE + " = " + 'c';

从这里我也没有这样的列:c(代码1):,编译时:SELECT * FROM dashboard_table WHERE vehicle_type = c

     String countQuery = "SELECT  * FROM " + DASHBOARD_TABLE;
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(countQuery, null);
    int cnt = cursor.getCount();
    cursor.close();
    return cnt;
}

public DashBoardAvaCapModel getVechicalRelAva(String vechical_type) {
    SQLiteDatabase db = null;
    Cursor cursor = null;
    DashBoardAvaCapModel dash = null;

    try {
        db = this.getReadableDatabase();
        cursor = db.query(DASHBOARD_TABLE, new String[]{_ID,
                        AVAILABLE, CAPACITY, BOOKED, VECHICAL_TYPE}, VECHICAL_TYPE + "=?",
                new String[]{String.valueOf(vechical_type)}, null, null, null, null);

        int idkey = cursor
                .getColumnIndex(_ID);
        int available = cursor
                .getColumnIndex(AVAILABLE);
        int capactity = cursor
                .getColumnIndex(CAPACITY);
        int booked = cursor
                .getColumnIndex(BOOKED);
        int vechicaltype = cursor
                .getColumnIndex(VECHICAL_TYPE);

        if (cursor != null && cursor.moveToFirst())

            dash = new DashBoardAvaCapModel(Long.valueOf(cursor.getString(idkey)),
                    cursor.getString(available), cursor.getString(capactity), cursor.getString(booked), cursor.getString(vechicaltype));
        Log.e("dash", "" + cursor.getString(available));

    } catch (final Exception ex) {
        String exp = String.valueOf(ex);
        Log.e("Databa", "" + exp);
    } finally {
        cursor.close();
        db.close();
    }

    return dash;

}

1 个答案:

答案 0 :(得分:1)

写完这一行后

   cursor = db.query(DASHBOARD_TABLE, new String[]{_ID,
                    AVAILABLE, CAPACITY, BOOKED, VECHICAL_TYPE}, VECHICAL_TYPE + "=?",
            new String[]{String.valueOf(vechical_type)}, null, null, null, null);

请尝试写

cursor.moveToFirst();

对于第一个,您可以使用

String countQuery = "SELECT * FROM " + DASHBOARD_TABLE + " WHERE " + VECHICAL_TYPE + " = '" + c + "'"
  

其中c是任何变量

希望这会对你有所帮助