我正在尝试检索数据库中人员的姓名。目前我得到一个越界错误。
我知道我试图检索的数据存在,因为我有一个显示数据库中所有数据的列表视图。
如果ELSE检查:
NameAppointPass.open();
String nameReturned = NameAppointPass.getName(sentID);
if(nameReturned != "")
{
Dialog d = new Dialog(this);
d.setTitle("returned");
TextView txt = new TextView(this);
txt.setText("win");
d.setContentView(txt);
d.show();
}
else
{
Dialog d = new Dialog(this);
d.setTitle("empty");
TextView txt = new TextView(this);
txt.setText("Fail");
d.setContentView(txt);
d.show();
}
希望有人能看到我出错的地方。
目前我收到以下错误:
01-21 21:41:43.753: E/AndroidRuntime(276): FATAL EXCEPTION: main
01-21 21:41:43.753: E/AndroidRuntime(276): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.flybase2/com.example.flybase2.addAppointment}: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
我正在使用onclick“long变量”从listview发送我想要的数据的ID,如下所示:
public void onListItemClick(ListView list, View v, int list_posistion, long item_id)
{
long idToPass = item_id;
Intent setName = new Intent("com.example.flybase2.addAppointment");
setName.putExtra("newPassedID", idToPass);
startActivity(setName);
}
然后通过bundle将其发送到对象实例'NameAppointPass',如下所示:
NameAppointPass.open();
String nameReturned = NameAppointPass.getName(sentID);
以下代码显示查询数据库的方法getName
,并应返回存储在所选ID中的名称,但我得到错误:
public String getName(long passedID) {
String [] columns = new String[]{KEY_ROWAPPID, KEY_NAMEAPP, KEY_TYPEAPP, KEY_TIMEAPP, KEY_DATEAPP, KEY_COMMENTAPP};
Cursor c = ourDatabase.query(DATABASE_TABLEAPP, columns, KEY_ROWAPPID + "=" + passedID, null, null, null, null);
if(c != null)
{
c.moveToFirst();
String name = c.getString(1);
return name;
}
return null;
}
答案 0 :(得分:2)
如果光标可以为空,则可以检查光标是否没有数据:
if(c != null && c.getCount() > 0)
要进一步诊断游标为空的原因,请在各个地方放置日志语句,以检查项目ID是否仍然正确。
答案 1 :(得分:0)
管理以对此进行排序。最后,我错误地将我的变量命名为持有传递的ID。