CursorIndexOutOfBoundsException during my query [SQLite]
我想在数据库中搜索
所在的行
在这里我调用方法:
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); |