【问题标题】:custom ErrorHandler for SQLiteOpenHelper in sqlCiphersqlCipher 中 SQLiteOpenHelper 的自定义 ErrorHandler
【发布时间】:2012-12-24 10:52:49
【问题描述】:

我开始使用 sqlCipher for Android (ver) 2.1.1,它在 Android 4.0.3 上的工作方式就像魅力一样。但是我发现SQLiteOpenHelper 类没有采用自定义错误处理程序的构造函数。这在 android.database 中提供的原始 SQLiteOpenHelper 类中非常有用,并且以特定于应用程序的方式处理错误非常有用。有谁知道在使用 sqlCipher 时如何合并自定义错误处理程序?

android.database.sqlite

中可用的构造函数
public SQLiteOpenHelper (Context context, String name, SQLiteDatabase.CursorFactory factory, int version);
public SQLiteOpenHelper (Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler);

net.sqlcipher.database

中可用的构造函数
public SQLiteOpenHelper (Context context, String name, SQLiteDatabase.CursorFactory factory, int version);

具体而言,当遇到某些类型的错误时,默认错误处理程序(使用 sqlcipher 时)会删除数据库,尽管是在提供 Log.e 消息之后。但我需要避免它。任何帮助表示赞赏。

【问题讨论】:

    标签: android database sqlcipher


    【解决方案1】:

    自定义数据库错误处理程序是最近添加到 android.database 包中的。 SQLCipher 包基于较旧的 API(级别 7),因此不包含此功能。我们将尝试仔细研究这一点,看看我们是否可以在不影响向后兼容性的情况下解决该问题。

    【讨论】:

    • 谢谢斯蒂芬。任何快速的解决方案表示赞赏
    • 来自邮件列表的交叉帖子:我们在过去一周对此进行了更多研究。不幸的是,这看起来不是一个非常简单的改变。我们仍然致力于支持 API 级别 7,在实现新功能的同时保持向后兼容性所需的更改将相对复杂。因此,虽然我们同意提供商删除损坏数据库的行为是不可取的,但我们可能不会对此进行短期修复。我们会在时间允许的情况下继续研究它,但我至少想让你知道今天的情况。
    • 再次感谢您的及时回复。如果 ver2.1.1 适用于 API-7,是否有在 Android 4.0.3 和 API-15 上使用密码的包?
    • Chris 在github.com/sqlcipher/android-database-sqlcipher/pull/84 签到后解决了此问题。我认为它现在已合并到主流中。
    猜你喜欢
    • 2014-04-11
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 2017-10-20
    • 2017-10-21
    相关资源
    最近更新 更多