读取给定行中特定字段的问题

时间:2012-05-27 15:16:14

标签: android sqlite cursor

我试图使用下面的代码获取给定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;

        }

我一直在寻找因索引超出范围而引起的异常。即时通讯不太适合游标,所以如果有人能帮助我在这里。 :S

1 个答案:

答案 0 :(得分: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()等 - 获取请求列'index
  • 的数据
  • requery() - 再次执行游标
  • close() - 释放游标资源。
  • 和下一个......

有关使用游标here

的更多信息

此致