【发布时间】:2016-11-12 17:45:18
【问题描述】:
我想在我的数据库中搜索KEY_TOR == place.getTor() 所在的行
这里我称之为方法:
DB_Place tor = db_tore.getDBPlace(place.getTor());
这是方法:
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;
}
对我来说看起来不错,除了我收到此错误:
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
我在这里缺少什么?是否可能与null 的一些列有关?
【问题讨论】:
-
尝试将这两行
if (cursor != null) cursor.moveToFirst();合并为一行if (cursor != null && cursor.moveToFirst()) -
顺便说一下,这是检索
KEY_TOR的意义,如果你已经知道它的值是name? -
@Rotwang 做到了。还是一样的错误。
-
另外,这个
new String[]{name}, null, null, null, null);应该是new String[]{name}); -
@Rotwang 老实说,这对我来说是新的。我从另一个有效的查询中复制了这个。在这些查询中,我正在寻找 where 子句中的 id。您对如何更改方法有什么建议吗?
标签: java android sqlite android-sqlite