我正在尝试从数据库中搜索特定元素。 我的数据库有三个颜色名称,编号和消息。这是我的功能
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
任何人都可以帮我找到我的代码中的错误...... !!
答案 0 :(得分:3)
你需要移动这个
v.moveToFirst();
进入你的if statement
,这样如果光标中没有任何内容,那么它将是假的,而不会在if中做任何事情。
if(v != null && v.moveToFirst())
也不要忘记在if语句v.close()
答案 1 :(得分:-1)
您的查询未返回光标中的任何行。所以游标count
是0
,所以在迭代游标之前检查游标count
,即
if(v != null &&v.getCount()!=0)
{
v.moveToFirst();
// do your work.
}