我收到以下错误:
android.database.sqlite.SQLiteDiskIOException: error code 10: disk I/O error
at android.database.sqlite.SQLiteStatement.native_execute(Native Method)
at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:92)
at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1926)
at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1866)
我只在Samsung Nexus手机上的ICS 4.0.1上出现此错误。在模拟器,Motorola Xoom 3.2和HTC Desire 2.3.3上,代码工作正常。我的代码针对SDK的版本8或2.2.x。 execSQL
执行如下:
db.execSQL("DROP TABLE IF EXISTS " + table.getTableName());
数据库存储在内部,而不是SD卡。关于如何解决这个问题的任何建议?
答案 0 :(得分:6)
解决了这个问题。
问题是在drop table语句之前有一个Context.deleteDatabase('dbName')
语句显然删除了db,然后报告的I / O错误非常有意义。
以前(不必要地)使用了腰带和背带方法。
然而有趣的是,在转移到ICS之前,这并没有表现出问题。