0

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

   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

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

4

2 回答 2

3

你需要移动这个

v.moveToFirst(); 

进入你的if statement,如果光标没有任何内容,它将是错误的,并且在 if 中不做任何事情。

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

也不要忘记在 if 语句之后关闭游标v.close()

于 2013-09-17T14:11:48.903 回答
-1

您的查询没有返回任何行作为游标的结果。所以游标count0,所以在迭代游标之前检查游标,count

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

   // do your work.
 }
于 2013-09-17T14:19:45.227 回答