android - 如何从游标存储一行

标签 android sqlite

我想从一个充满数据的游标中提取一行并将其存储在另一个对象中以供其他用途。

我的代码:

SQLiteDatabase db = dbOpener.getReadableDatabase();
            Cursor dataSet = db.query(WPTemplateDB.PRODUCT_TABLE, 
                                null, //all columns
                                null, //where clause
                                null, //where clause args
                                null, null, null);//groupBy, having, orderBy
while (dataSet.moveToNext()){

                Product product = new Product(dataSet);
                pArray.add(product);
            }

我的存储对象:

public Product(Cursor cursor){

        productData = cursor;
    }

    public String getData(String column){
        Log.d(column, productData.getColumnIndex(column)+"");
        return productData.getString(productData.getColumnIndex(column));
    }

现在,我遇到“请求索引 10,大小为 10”的错误。我该怎么办?

最佳答案

不应该使用游标是 Product 对象的构造函数。它会泄漏内存,因为游标在不使用时必须关闭。 您应该从游标读取数据,然后将数据发送到构造函数 Product,例如:

String productName = cursor.getString(0);// 0 is column name
......
cursor.close();

Product product = new Product(name);

关于android - 如何从游标存储一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23672996/

相关文章:

sql - 在单个表中获得缺席的订购号

asp.net-mvc - Entity Framework +SQLite部署

android - 如何去除 SQLite 查询中的特定情况

Android DialogFragment 为空白

android - 为什么 Android Debug模式会删除我的应用程序首选项?

ruby-on-rails - 如何在 Rails 4.2 和 sqlite 中按星期几进行过滤?

android - 获取 SQLite 数据库的下一个 AUTO_INCREMENT 值

android - 解析 Android 中的多部分响应

android - 在 App 中显示 PDF 文件

android - 构建Android APK时无法排除TVDIF可绘制文件夹