如何防止“sqlite_config失败error_code = 21.这不​​应该发生”错误

时间:2013-09-06 14:01:58

标签: java android sql database sqlite

这个无益的错误信息最近让我发疯;它不会出现在android模拟器中,只有在我的(android 2.3.6)设备上通过USB调试运行时,从Eclipse启动。

实际上没有异常被抛出,据我所知,我的数据库查询实际上都没有失败(一切似乎都正常工作),但我收到的每个查询中至少有一个错误运行

据我所知,我做的一切都是正确的:

  • 我正在使用一个SQLiteOpenHelper实例作为单例创建(synchronized static方法使用应用程序的上下文检索单个实例)。
  • 当我需要运行getWritableDatabase()update等时,我只会致电insert,其余时间我使用getReadableDatabase()
  • 涉及可写数据库的所有操作也包含在具有try/catch/finally块的事务中,以确保调用endTransaction()
  • 所有其他查询都包含在try/catch块中,以捕获任何可能的SQLException响应,并根据需要进行记录。
  • 我在我正在使用的所有close()SQLiteDatabase个对象上调用Cursor

这些都是过去在模拟器中抛出背景错误的东西,直到我纠正它们,当我在模拟器中运行我的应用程序时,我看不到任何类型的数据库错误了。然而,在我的设备上运行,我得到了无用的“这应该永远不会发生”的错误,似乎对于我运行的每一个查询都没有明显的不良影响。

当然,我暂时忽略了这些,但我想不出任何其他可能的原因。我的SQL语句都是有效的,我的大部分代码都基于官方的android教程,例如here

任何人都可以确定为什么我会收到这些错误?还有其他可能的原因吗?

2 个答案:

答案 0 :(得分:0)

这是因为根据https://stackoverflow.com/a/5285486/1438915

错误地使用了SQLite Api

这个答案可以帮助您解决问题。

检查SQLite

答案 1 :(得分:0)

我记得当您尝试访问已关闭的sqlite数据库时发生此错误。当多个线程同时访问数据库并且其中一个线程称为关闭时,可能会发生这种情况。我刚刚完全没有关闭sqlite数据库解决了这个问题。希望这可以帮助。