Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android游标超出界限异常索引0_Java_Android_Sqlite - Fatal编程技术网

Java Android游标超出界限异常索引0

Java Android游标超出界限异常索引0,java,android,sqlite,Java,Android,Sqlite,我正在试图检索数据库中某个人的姓名。目前我得到一个越界错误 我知道存在我试图检索的数据,因为我有一个显示数据库中所有数据的列表视图 如果没有,请检查: NameAppointPass.open(); String nameReturned = NameAppointPass.getName(sentID); if(nameReturned != "") { Dialog d = new Dialog(this); d.setTitle("

我正在试图检索数据库中某个人的姓名。目前我得到一个越界错误

我知道存在我试图检索的数据,因为我有一个显示数据库中所有数据的列表视图

如果没有,请检查:

 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 variable”从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);  
}
NameAppointPass.open();
String nameReturned = NameAppointPass.getName(sentID);
然后通过包将其发送到对象实例“NameAppointPass”,如图所示:

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);  
}
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;
    }

如果光标可以为空,则可以检查光标是否没有数据:

        if(c != null && c.getCount() > 0)

要进一步诊断光标为空的原因,请在不同的位置放置日志语句,以检查项目id是否仍然正确。

成功地对其进行排序。最后,由于保存传递的ID,我错误地命名了变量。

+1,正如您所说的
if(c!=null)
不检查光标是否为空。@Sam我在返回的字符串Sam上添加了一个“if ELSE”检查。(如我的原始问题中编辑和显示的)。如果我添加检查以确保行已返回(如Henrry所述),程序不再崩溃,但如果没有计数检查,它仍然崩溃!另外,“IF”语句返回true,表示“namerentered”不等于零,即存在一个结果。现在非常困惑@user1352057根本问题是没有
KEY_ROWAPPID+“=”+passedID
的行。。。仔细检查
passedID
的值。