wcdb icon indicating copy to clipboard operation
wcdb copied to clipboard

数据库恢复问题

Open caikaidev opened this issue 4 years ago • 2 comments

The language of WCDB

Java

The version of WCDB

v1.0.8

The platform of WCDB

Android

The installation of WCDB

Maven

What's the issue?

背景: 想实现检测数据库损坏后,通知上层提示用户进入到数据库修复页面。这里就需要监听到数据库损坏的回调。目前使用的是Room+wcdb。 看源码有SupportSQLiteOpenHelper.Callback 和 DatabaseErrorHandler有数据库损坏的回调,但是看了一下初始化的代码,好像没有找到怎么设置这些回调。

请教一下,改如何监听到数据库被损坏。

    public static TestDb getInstance(Context context) {
        if (null == instance) {
            WCDBOpenHelperFactory factory = new WCDBOpenHelperFactory()
                    .writeAheadLoggingEnabled(false);

            instance = Room.databaseBuilder(context.getApplicationContext(), TestDb.class, DB_NAME)
                    .openHelperFactory(factory)
                    .addCallback(callback)
                    .build();
        }
        return instance;
    }

caikaidev avatar Apr 07 '21 12:04 caikaidev

同问,Android这边没有办法察觉数据库是否损坏,没有时机自动调用封装的修复方法,麻烦解答下这个问题

zhangxin86 avatar May 12 '21 08:05 zhangxin86

room有默认的损坏修复机制,代码位于SupportSQLiteOpenHelper.Callback.onCorruption(),wcdb最终也调用此方法,想要监听的话重写此方法即可

hahaha28 avatar May 30 '23 11:05 hahaha28