首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

异地
EN

Stack Overflow用户
提问于 2012-05-02 13:25:50
回答 1查看 422关注 0票数 0

我目前正在android应用上做最后一年的项目。我试图创建一个登录模块,但是它总是给我一个错误:

请求的android.database.CursorIndexOutOfBoundsException:索引-1,大小为1

“1的大小”是我试图获取的用户数据;但是,我不知道从这里到哪里去。有人能帮我解决这个问题吗?这是我的密码:

代码语言:javascript
运行
复制
    Cursor c = agentDatabase.rawQuery("SELECT COUNT(username) FROM " + DATABASE_TABLE + " WHERE " + KEY_USERNAME + " = ? AND " +KEY_PASSWORD + " = ?", new String[]{user, pass});

    String result = "";

    if(c != null && c.moveToPosition(0)){
        //if (c.moveToFirst()){

            int r = c.getCount();

            if(r == 1){
                //Cursor d = agentDatabase.rawQuery("SELECT * FROM " + DATABASE_TABLE + " WHERE " + KEY_USERNAME + " = '" + user + "'", new String[]{ KEY_ROWID, KEY_NAME, KEY_EMAIL, KEY_USERNAME});

                Cursor d = agentDatabase.rawQuery("SELECT * FROM " + DATABASE_TABLE + " WHERE " + KEY_USERNAME + " = ?", new String[]{user});

                int iRow = d.getColumnIndex(KEY_ROWID);
                int iName = d.getColumnIndex(KEY_NAME);
                int iEmail = d.getColumnIndex(KEY_EMAIL);
                int iUser = d.getColumnIndex(KEY_USERNAME);

                result = result + d.getString(iRow) + " " + d.getString(iUser) + " " + d.getString(iName) + " " + d.getString(iEmail) + "\n";

            }
        //}
    }

    return result;
}
EN

回答 1

Stack Overflow用户

发布于 2012-05-02 13:30:57

在获取数据之前,应将光标移动到第一行。

代码语言:javascript
运行
复制
Cursor d = agentDatabase.rawQuery("SELECT * FROM " + DATABASE_TABLE + " WHERE " + KEY_USERNAME + " = ?", new String[]{user});
d.moveToFirst();

如果您只期望结果游标中的一行,这将有效,否则您可以使用d.move

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10414698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档