0

我试图使用下面的代码获取给定 ID 的相应标题

public String get_Title(int id){
        Cursor c = db.query(true, DATABASE_TABLE, new String[] {
                APP_TITLE,
                },
                KEY_ROWID + "="  + id,
                null,
                null,
                null,
                null,
                null);

                String Final = c.getString(0);

                return Final;

        }

我不断收到由索引超出范围引起的异常。IM 对光标不好,所以如果有人可以在这里帮助我。:S

4

1 回答 1

0

你必须在String Final = c.getString(0)打电话之前c.moveToFirst()c.moveToNext()然后它应该工作。因为Cursor隐式定位到第一行之前的位置,所以您必须首先移动Cursor到第一行,然后才能从中获取数据。

编辑:


所以它应该是这样的:

if (c.getCount()) { // if there is some data
   c.moveToFirst();
   String Final = c.getString(0);
}
else {
   Toast.makeText(YourActivityName.this, "No data found", Toast.LENGTH_SHORT).show();
}

所以你写了你不擅长工作,Cursor几乎没有介绍:

如果执行任何语句,总是会返回 Cursor 类的实例。它是数据库游标的版本,在许多数据库系统中使用。

Class Cursor have following few basic methods:
  • getCount() - 获取实际游标中有多少行
  • moveToFirst()、moveToNext() 等 - 用于在行之间移动
  • getColumnNames() - 获取列名
  • getColumnIndex() - 获取给定列名的从零开始的索引...
  • getString()、getInt() 等 - 获取请求列索引的数据
  • requery() - 再次执行游标
  • close() - 释放游标资源。
  • 接下来...

有关使用光标的更多信息,您可以在此处找到

问候

于 2012-05-27T15:20:29.810 回答