java - 安卓 SQLite : CursorIndexOutOfBoundsException when retrieving a row from a table?

标签 java android sql sqlite cursor

当尝试使用 ID 从 Sqlite 表中获取单行时,我不断收到 android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1 异常> 值(value)。

您认为为什么会发生这种情况?我的代码有什么问题?

public Product getProduct(DBOps dop, String productId) {

        Product p = new Product();
        String sqlQuery = "SELECT " + TableInfo.PID + " FROM "
  + TableInfo.TABLE_NAME +" WHERE pid="+"'"+productId+"'"; 
        SQLiteDatabase SQ = dop.getReadableDatabase();
        Cursor CR = SQ.rawQuery(sqlQuery, null);

        try
        {
            if(CR.getCount() > 0)
            {
                while (!CR.isAfterLast()) {
                    p.PID = CR.getString(0);
                    p.NAME = CR.getString(1);
                    p.SIZE = CR.getString(2);
                    p.COLORS = CR.getString(3);
                    p.DESC = CR.getString(4);
                    p.PRICE= CR.getString(5);
                    p.OUTLETS = CR.getString(6);
                    p.FABRIC = CR.getString(7);
                    p.QUANTITY = CR.getString(8);
                    p.CATEGORY = CR.getString(9);
                    p.RATING = CR.getString(10);

                    CR.moveToNext();
                }
            }
            else
            {
                CR.close();
            }
        }
        catch(Exception ex)
        {
            Log.e("DBOps Error", "Look at DBOps Class's getProduct Method");
            Log.e("DBOps Error", ex.toString());
        }
        return p;
    }

最佳答案

android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1

因为您当前仅从表中选择一列 TableInfo.PID 但试图从游标中检索多于一列。

因此,通过在选择查询中指定所有列或使用 * FROM 获取所有列来更改选择查询:

String sqlQuery = "SELECT * FROM "
  + TableInfo.TABLE_NAME +" WHERE pid="+"'"+productId+"'"; 

关于java - 安卓 SQLite : CursorIndexOutOfBoundsException when retrieving a row from a table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27751908/

相关文章:

android - 在没有 Activity 运行时查找手机的位置

android - 如何从 Android 客户端应用程序在 Ubuntu 服务器上执行一组 Python 脚本并将结果返回给客户端应用程序

android - 在印度创建开发者帐户的问题

mysql - SQL 错误代码 1054 未知列

mysql - sql自连接中根据特定条件获取行

java - ForkJoinPool中递归任务和递归 Action 的区别

java - Java中的空数组对象创建

java - 为什么 addDomain 方法会影响域的父类(super class)

java - 滑动过渡可返回,但按后退按钮不会返回

mysql - 多对多具有共同的 where 条件