cursorIndexOutOfBoundsException:请求索引0,大小为0

时间:2013-09-17 14:08:27

标签: android

我正在尝试从数据库中搜索特定元素。 我的数据库有三个颜色名称,编号和消息。这是我的功能

   public void getmessage() {
// TODO Auto-generated method stub
String msg;
String number = "1112";
String [] columns = new String[]{row_name,row_contactno,row_message};
String whereClause = row_contactno + " = ?";
String[] whereArgs = new String[]{number};
Cursor v = ourdatabase.query(database_table, columns, whereClause, whereArgs, null, null, null);

    if(v != null)
    {
    v.moveToFirst(); 
    int id = v.getColumnIndex(row_message);
    msg = v.getString(id);
        Toast.makeText(ourcontext, msg.toString(), Toast.LENGTH_LONG).show();
    }
    ourdatabase.close();
    }

但是当我运行它时,我得到了CURSORINDEXOUTOFBOUNDS异常:请求索引0,大小为0

任何人都可以帮我找到我的代码中的错误...... !!

2 个答案:

答案 0 :(得分:3)

你需要移动这个

v.moveToFirst(); 

进入你的if statement,这样如果光标中没有任何内容,那么它将是假的,而不会在if中做任何事情。

if(v != null && v.moveToFirst())

也不要忘记在if语句v.close()

之后关闭游标

答案 1 :(得分:-1)

您的查询未返回光标中的任何行。所以游标count0,所以在迭代游标之前检查游标count,即

if(v != null &&v.getCount()!=0)
 {
    v.moveToFirst(); 

   // do your work.
 }