Java 如何预防;sqlite\u配置失败错误\u代码=21。这种情况永远不会发生。”;错误
这个毫无帮助的错误信息最近让我发疯;它不会出现在android emulator中,仅当通过USB调试在我的(android 2.3.6)设备上运行时才会出现,该设备是从Eclipse启动的 实际上没有抛出异常,据我所知,我的数据库查询没有一个真正失败(一切似乎都正常工作),但我运行的每个查询都至少收到一个这样的错误 就我所知,我做的一切都是对的:Java 如何预防;sqlite\u配置失败错误\u代码=21。这种情况永远不会发生。”;错误,java,android,sql,database,sqlite,Java,Android,Sql,Database,Sqlite,这个毫无帮助的错误信息最近让我发疯;它不会出现在android emulator中,仅当通过USB调试在我的(android 2.3.6)设备上运行时才会出现,该设备是从Eclipse启动的 实际上没有抛出异常,据我所知,我的数据库查询没有一个真正失败(一切似乎都正常工作),但我运行的每个查询都至少收到一个这样的错误 就我所知,我做的一切都是对的: 我正在使用一个创建为单例的SQLiteOpenHelper实例(同步静态方法使用应用程序的上下文检索单个实例) 我只在需要运行update、ins
- 我正在使用一个创建为单例的
实例(同步静态方法使用应用程序的上下文检索单个实例)SQLiteOpenHelper
- 我只在需要运行
、update
等时调用insert
,其余时间我使用getWritableDatabase()
getReadableDatabase()
- 所有涉及可写数据库的操作也都用
块包装在事务中,以确保调用try/catch/finally
endTransaction()
- 所有其他查询都封装在一个
块中,以捕获任何可能的try/catch
响应,并根据需要记录这些响应SQLException
- 我正在对我正在使用的所有
和SQLiteDatabase
对象调用Cursor
close()
有人能确定我为什么会出现这些错误吗?还有其他可能的原因吗?根据 这个答案可能会帮助你解决问题
检查我记得当您尝试访问已关闭的sqlite db时会发生此错误。当多个线程同时访问db,其中一个线程称为关闭时,可能会发生此错误。我只是通过根本不关闭sqlite数据库解决了这个问题。希望这有帮助 不过就是这样;我找不到我做错了什么。我的
SQLiteOpenHelper
是一个单线程,因此我知道多线程应该不会是问题,即使如此,我只有两个基本类,一个PreferenceActivity
和一个BroadcastReceiver
,只有后者执行过写操作,另一个只执行基于SELECT
的操作。