【问题标题】:How to view the tables of Room Database in sqlite DB browser?如何在 sqlite DB 浏览器中查看 Room Database 的表?
【发布时间】:2023-03-19 15:22:01
【问题描述】:

我在我的示例应用程序中使用 RoomDB。我能够在 DB 上执行 CRUD 操作。但我无法查看 db 文件。我想在 sqlite DB 浏览器中查看表结构。

这是我的 APPDatabase

 @Database(entities = {User.class}, version = 1,exportSchema = false)

public abstract class AppDatabase extends RoomDatabase {

    private static AppDatabase INSTANCE;  
    public abstract UserDao userDao();        
    public static AppDatabase getAppDatabase(Context context) {
        if (INSTANCE == null) {
            INSTANCE =
                    Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, "user-database")                                
                            .allowMainThreadQueries()
                            .build();
        }
        return INSTANCE;
    }    
    public static void destroyInstance() {
        INSTANCE = null;
    }
}

帮我获取数据库文件。

【问题讨论】:

  • 你在它的地方找不到它或者你不知道这个地方?
  • Context#getDatabasePath方法
  • @pskink 但是如何以及在哪里使用它?在哪个文件中
  • 以任何Activity 为例

标签: android android-room


【解决方案1】:

我就是这样做的。在 Android Studio 3.1 中,

  1. 访问视图>工具窗口>设备文件资源管理器。
  2. 导航到文件夹 /data/data/<your package>/databases
  3. 保存以 .db 结尾的数据库文件

如果您看不到数据库文件,请考虑使用以下代码复制文件

fun exportDB(context: Context){
        try {
            val sd = Environment.getExternalStorageDirectory()

            if (sd.canWrite()) {
                val backupDBPath = "database.db"
                val currentDB = context.getDatabasePath("database.db")
                val backupDB = File(sd, backupDBPath)

                val src = FileInputStream(currentDB).getChannel()
                val dst = FileOutputStream(backupDB).getChannel()
                dst.transferFrom(src, 0, src.size())
                src.close()
                dst.close()
                Log.i("database","export database done. Original path: $currentDB")
            }else{
                Log.i("database","cannot write database")
            }
        } catch (e: Exception) {
            Log.e("database","export database failed. "+e.message)
        }
    }

更新:the db file is empty, and u need .db-shm and .db-wal to open .db file.

【讨论】:

    猜你喜欢
    • 2023-04-08
    • 2013-09-20
    • 2019-12-04
    • 2014-03-13
    • 1970-01-01
    • 2019-05-19
    • 2013-10-06
    • 2019-06-17
    • 1970-01-01
    相关资源
    最近更新 更多