关于我的查询期间的java:CursorIndexOutOfBoundsException [SQLite]

CursorIndexOutOfBoundsException during my query [SQLite]

我想在数据库中搜索KEY_TOR == place.getTor()

所在的行

在这里我调用方法:

1
DB_Place tor = db_tore.getDBPlace(place.getTor());

这是方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public DB_Place getDBPlace(String name) {
    SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = db.query(TABLE_DB_TORE_Eintrag, new String[] { KEY_ID,
                    KEY_PLACE_ID, KEY_NAME, KEY_LONGITUDE, KEY_LATITUDE, KEY_TOR }, KEY_TOR +"=?",
            new String[]{name}, null, null, null, null);
    if (cursor != null)
        cursor.moveToFirst();

    DB_Place place = new DB_Place(Integer.parseInt(cursor.getString(0)),
            cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5));

    return place;
}

对我来说很好,除了我遇到此错误:

1
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.x.x/com.example.ahok.x.UI_MainActivity}: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0

我在这里想念什么? 可能与某些列有关吗?


好像您没有在数据库中插入任何数据。此外,您的代码中存在一些逻辑错误。

我想这样编辑您的功能。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public DB_Place getDBPlace(String name) {
    SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = db.query(TABLE_DB_TORE_Eintrag, new String[] { KEY_ID,
                    KEY_PLACE_ID, KEY_NAME, KEY_LONGITUDE, KEY_LATITUDE, KEY_TOR }, KEY_TOR +"=?",
                    new String[]{name}, null, null, null, null);

    DB_Place place = null;

    if (cursor != null && cursor.getCount() > 0 && cursor.moveToFirst()) {

        place = new DB_Place(Integer.parseInt(cursor.getString(0)),
            cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5));
    }

    return place;
}

更新

因此,如果您认为它是查询的错误,则可以像这样运行简单的查询。

1
Cursor cursor = db.rawQuery("Select * from" + TABLE_DB_TORE_Eintrag +" where" + KEY_TOR +" = '" + name +"'", null);