android java.lang.IllegalStateException:无法从 CursorWindow 读取第 0 行、第 0 列

2023-12-09

我正在开发一个应用程序,它下载一些文件并将其文本保存在 file_content 字段中到数据库中。文件大小可以从几 KB 到 10 MB 不等。该应用程序在保存时适用于所有尺寸。在长 file_content 记录上使用 select 语句时会出现此问题。它给

java.lang.IllegalStateException:无法从 CursorWindow 读取第 0 行、第 0 列

获取此类行时。字段内容大小有限制吗?如果是这样,那么为什么它让我们保存并在检索时给出错误? 这是我提取行的代码片段:

public String getFileContent(MyFile gc) {
        if(!isDBOpen()) {
            open();
        }
        try {
            String mQuery = "SELECT * FROM " + DBOpenHelper.TABLE_SAVED_FILES + " WHERE " + DBOpenHelper.COLUMN_ID + " = " + gc.id;
            Cursor mCursor = database.rawQuery(mQuery, null);
            if(mCursor.getCount() <= 0) {
                return null;
            }
            if(mCursor.moveToFirst()) {
                return getCursorRowContent(mCursor);
            }
        } catch (Exception e) {
            e.getMessage();
        }
        return null;
    }

    private String getCursorRowContent(Cursor mCursor) throws Exception {
        return mCursor.getString(mCursor.getColumnIndex(DBOpenHelper.COLUMN_FILE_CONTENT));
    }

知道发生了什么事吗?我已经在 2 到 3 台设备上进行了测试。

Logcat 输出:

01-29 13:41:56.520: W/CursorWindow(4121): Window is full: requested allocation 5140987 bytes, free space 2096617 bytes, window size 2097152 bytes
01-29 13:41:56.520: E/CursorWindow(4121): Failed to read row 0, column 0 from a CursorWindow which has 0 rows, 9 columns.

01-29 13:43:30.932: W/System.err(4121): java.lang.IllegalStateException: Couldn't read row 0, col 0 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it. 
01-29 13:43:30.932: W/System.err(4121):     at android.database.CursorWindow.nativeGetLong(Native Method) 
01-29 13:43:30.932: W/System.err(4121):     at android.database.CursorWindow.getLong(CursorWindow.java:507) 
01-29 13:43:30.932: W/System.err(4121):     at android.database.AbstractWindowedCursor.getLong(AbstractWindowedCursor.java:75) 
01-29 13:43:30.936: W/System.err(4121):     at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:220) 
01-29 13:43:30.936: W/System.err(4121):     at android.database.AbstractCursor.moveToNext(AbstractCursor.java:245) 
01-29 13:43:30.940: W/System.err(4121):     at com.nxb.cachehead.bl.PocketQueryDataSource.getGeoCacheContent(PocketQueryDataSource.java:97) 01-29 13:43:30.940: W/System.err(4121):     at com.nxb.cachehead.bl.GPXFileCopyAsyncTask.doInBackground(GPXFileCopyAsyncTask.java:27) 
01-29 13:43:30.940: W/System.err(4121):     at com.nxb.cachehead.bl.GPXFileCopyAsyncTask.doInBackground(GPXFileCopyAsyncTask.java:1) 
01-29 13:43:30.940: W/System.err(4121):     at android.os.AsyncTask$2.call(AsyncTask.java:287) 
01-29 13:43:30.944: W/System.err(4121):     at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
01-29 13:43:30.944: W/System.err(4121):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
01-29 13:43:30.948: W/System.err(4121):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
01-29 13:43:30.948: W/System.err(4121):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
01-29 13:43:30.948: W/System.err(4121):     at java.lang.Thread.run(Thread.java:856)

01-29 13:41:56.520:W / CursorWindow(4121):窗口已满:请求分配5140987字节,可用空间2096617字节,窗口大小2097152字节

Android SQLite 在游标窗口中返回最大大小为 2MB 的行,如指定的那样config_cursorWindowSize。如果您的行超出此限制,您将收到此错误。

无论如何,在 sqlite 数据库中存储大数据并不是一个好主意。将文件存储在文件系统中,将路径存储在数据库中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android java.lang.IllegalStateException:无法从 CursorWindow 读取第 0 行、第 0 列 的相关文章

随机推荐

  • 如何判断Android Service是否在前台运行?

    我有一个服务 我相信它在前台运行 如何检查我的实施是否正常工作 public static boolean isServiceRunningInForeground Context context Class
  • 成功上传图像后 firebase snapshot.downloadURL 未定义

    我的应用程序中有这段代码 我用它来上传图像并获取其 url 以便我可以将其保存在数据库中 该图像采用 base64 格式 并且上传成功 如我所见console log snapshot 输出 并且通过检查我的 firebase 存储 快照的
  • Fullcalendar JSON Feed 缓存

    我怎样才能得到全日历缓存来自 JSON feed 的事件 我不认为lazyfetching做我想做的事 它的有效期为一个月 假设我加载一个月 一月 然后更改为日视图 数据被缓存并且不发送ajax请求 但如果我将月份更改为二月并返回一月 一月
  • django-debug-toolbar 没有显示

    我看了其他问题 但无法弄清楚 我执行了以下操作来安装 django debug toolbar pip 安装 django debug toolbar 添加到中间件类 MIDDLEWARE CLASSES django middleware
  • Bash 脚本超级慢

    我正在更新一个旧脚本来解析 ARP 数据并从中获取有用的信息 我们添加了一个新的路由器 虽然我可以从路由器中提取 ARP 数据 但它采用了新的格式 我有一个文件 zTempMonth 它是来自两组路由器的所有 arp 数据 我需要将其编译成
  • 对 XML 文档的各个部分进行数字签名

    我有一个 XML 文档 其结构类似于以下内容
  • jsf 模板中的后台 url 路径

    我在这里遇到麻烦了 我有一个 JSF 应用程序 它有一个名为的模板文件基本模板 xhtml 该文件位于 resources template 文件夹中 遵循文件代码
  • 如何在从datalab运行的数据流管道中使用谷歌云存储

    我们一直在 datalab 中运行一个 Python 管道 该管道从 google 云存储中的存储桶中读取图像文件 导入 google datalab storage 最初我们使用 DirectRunner 效果很好 但现在我们尝试使用 D
  • 为什么 python max('a', 5) 返回字符串值?

    追溯一个ValueError cannot convert float NaN to integer我发现该行 max a 5 max 5 a 将返回a而不是 5 在上面的例子中我使用了示例字符串a但在我的实际情况下 字符串是NaN 拟合过
  • Spring中如何在请求参数中发送特殊字符

    如何处理请求参数中的特殊字符 这是我的控制器 Scope request RestController public class GetOperatorSeries RequestMapping value test method Requ
  • 为什么易失性不能正常工作

    今天我正在使用以下命令创建一项超时作业TimerTask但遇到了一个新问题 我有一个static volatile boolean多变的flag 我的理解是 一旦这个变量的值发生变化 所有正在运行的都会通知它thread 但是当我运行这个程
  • 模拟 Java 输入流

    请提供指针来帮助我模拟 java InputStream 对象 这是我希望模拟的代码行 InputStreamReader inputData new InputStreamReader System in bufferdReader ne
  • 在sql server中执行python脚本

    Experts 只是好奇想知道 有没有办法在任何sql服务器中执行python脚本 如果是这样 请给我提供一些参考链接 要在 sql server 中执行 python 脚本 请参考此question 欲了解更多详细信息 请阅读此内容doc
  • Angular2 Beta 依赖注入

    我有一个加载 QApi 服务的 NavBar 组件 QApi 服务加载 UserService 但出现以下错误 EXCEPTION No provider for UserService NavBarComponent gt QApi gt
  • 如何让Android Service与Activity通信

    我正在编写我的第一个 Android 应用程序 并试图了解服务和活动之间的通信 我有一个服务将在后台运行并执行一些 GPS 和基于时间的日志记录 我将有一个用于启动和停止服务的活动 因此 首先 我需要能够确定活动启动时服务是否正在运行 这里
  • iPhone 所有视图控制器都有一个标题

    我有一个带有选项卡栏控制器 带有 4 个视图控制器 的应用程序 它包含一个导航控制器 所有这些都是以编程方式创建的 我的问题 有没有一种方法可以为所有视图控制器设置一个导航栏标题 例如 当我切换选项卡时 标题是相同的 对我来说理想的解决方案
  • 在 SELECT 列表中的其他位置引用别名

    我有以下查询 select FirstName LastName Case When LastName Jones then N A End as Other Case When Other is not null then 1 else
  • 为什么这些 apt 软件包在 Ubuntu 和 Heroku 上的行为不一样?

    我想用ZBar从Python开始Heroku 在常规 Ubuntu 14 04 服务器上我可以运行 sudo apt get install python qrtools OR sudo apt get install zbar tools
  • 如何使用 ASP.NET 解析 JSON 字符串?

    我正在使用 Sendgrid API 发送和检索已发送邮件的统计信息 我想将 API 的响应存储在数据库中 protected void btnBounces Click object sender EventArgs e try stri
  • android java.lang.IllegalStateException:无法从 CursorWindow 读取第 0 行、第 0 列

    我正在开发一个应用程序 它下载一些文件并将其文本保存在 file content 字段中到数据库中 文件大小可以从几 KB 到 10 MB 不等 该应用程序在保存时适用于所有尺寸 在长 file content 记录上使用 select 语