我在android上有一个使用sqlite的应用程序。一切正常,我可以毫无问题地创建,读写数据库。 但是如果我在eclipse中更改源代码(只要重新编译就无关紧要),就会创建新的apk并将其推送到模拟器。现在访问数据库将导致
enter code here03-07 15:50:03.886: ERROR/AndroidRuntime(311): Caused by: android.database.sqlite.SQLiteException: file is encrypted or is not a database
使用文件资源管理器删除数据库文件并访问数据库,将重新创建数据库,一切都很好。
我确信每次访问后数据库都会关闭。
答案 0 :(得分:-2)
我也发现了这个错误!最后我决定从我的APP创建数据库文件,执行一些代码,如:
public class MyHelperSqliteHelper extends SQLiteOpenHelper{
// SQL to generate USER table
String sqlCreate = "CREATE TABLE 'user' " +
"('X_id' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , " +
"'D_name' VARCHAR);";
...
@Override
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(sqlCreate);
}catch (SQLException e) {
e.printStackTrace();
}
}
...
}
下一步是将此文件从DDMS视图导出到文件,并使用SQLite管理器打开该文件。在这里,您可以导入所有数据和其他表格。
最后一步只需要从SQLiteManager导出这个数据库,如果你打开这个文件就可以看到它是加密的。
我知道这是一个时间解决方案,但它可以解决这个问题,你只需要这样做一次而不是更多。
祝你好运!