Sqlite文件加密或不是Android上的数据库

时间:2011-03-07 15:06:04

标签: android sqlite

我在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

使用文件资源管理器删除数据库文件并访问数据库,将重新创建数据库,一切都很好。

我确信每次访问后数据库都会关闭。

1 个答案:

答案 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导出这个数据库,如果你打开这个文件就可以看到它是加密的。

我知道这是一个时间解决方案,但它可以解决这个问题,你只需要这样做一次而不是更多。

祝你好运!