如何在Android中将ORMLite与SQLCipher一起使用?

Bru*_*ini 16 android ormlite sqlcipher

我想在我的Android项目中使用OrmLiteSQLCipher,但是这两个库都有自己的抽象SQLiteOpenHelper类来实现.Java不允许类扩展两个类,如果我单独实现,它们将不会相互通信.

我怎样才能一起工作?如何解决SQLiteOpenHelper实施问题?

ge0*_*0rg 6

我已经将Rejinderi的答案提炼为ORMLite 4.43补丁并将其编译成JAR文件.要将其集成到Android项目中,请执行以下操作:

  1. 按照SQLCipher for Android HOWTO将SQLCipher导入您的项目
  2. 将ORMLite添加到项目中(请参阅使用带有SQLite和Android的ORMLite的优秀教程)
  3. 替换libs/ormlite-android.jarormlite-android-sqlcipher.jar
  4. 将您的秘密数据库密码添加到相应的DB打开方法

但是,您不应该相信我提供未处理的JAR文件,而是遵循修补程序中的构建说明.

编辑:随着补丁库的调用getReadableDatabase(),getWritableDatabase()并在OrmLiteSqliteOpenHelper构造函数需要传递密码作为附加参数.如果您正在使用数据库帮助程序,请适当地扩展它以将密码传递给OrmLiteSqliteOpenHelper.


Gra*_*ray 4

如何在 Android 中将 ORMLite 与 SQLCipher 一起使用?

应该有可能@Bruno。

一种可行的方法是将ORMLite 的OrmLiteSqliteOpenHelper复制到您的项目中,将其重命名为LocalOrmLiteSqliteOpenHelper或其他名称,然后将基类更改为SQLCipher辅助类。我不敢相信他们没有将班级重命名为SQLCipherSQLiteOpenHelper. (叽)

public abstract class LocalOrmLiteSqliteOpenHelper
    extends info.guardianproject.database.sqlcipher.SQLiteOpenHelper {
Run Code Online (Sandbox Code Playgroud)

另一种方法是让你的助手扩展SQLCipherSQLiteOpenHelper ,然后实现你自己需要的各种东西OrmLiteSqliteOpenHelper。然而,这需要更多的工作。在创建数据库时,ORMLite 必须对数据库连接进行一些操作,否则它会递归。

让我知道这些是否有效。

  • 我尝试过,但遇到编译时错误 EX:" new AndroidConnectionSource(this);" (3认同)
  • 答案已经过时了。它对于旧版本的 ORMLite 有效。所以,正在抱怨的小伙伴们,请稍等,等有人更新答案 (2认同)