java - Android光标越界异常索引0

标签 java android sqlite

我正在尝试检索数据库中的人员姓名。目前我遇到了越界错误。

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

IF 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“长变量”从 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;
    }

最佳答案

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

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

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

关于java - Android光标越界异常索引0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14448024/

相关文章:

java - Android - 从SQLite获取数据并显示在ListView中

java - POI 生成的 Excel 工作簿在链接时不起作用

局部变量的 Javadoc?

Android Camera setDisplayOrientation 不起作用

java - 如何通过 switch 提供在线商店中的产品列表?如何使用退出到主菜单? (或其他方式)

python - 尝试定义删除功能,用户在其中输入名称并单击按钮,然后删除该行

java - 如何检索按 ID 分组的所有实体?

java - android editText文本在mysql数据库中显示为0?

java - 如何等待多个 Volley 请求完成?

c# - 是否可以通过其他方法关闭 SQLite DB 连接?