【问题标题】:How to view sqlite database in android phone如何在android手机中查看sqlite数据库
【发布时间】:2018-09-13 19:47:14
【问题描述】:

我已将我的设备连接到系统。但我无法在 DDMS 的文件探索中查看我的数据库。有什么简单的方法可以让我从 android-device 获取数据库文件吗?

【问题讨论】:

  • 在真实设备中无法看到您的数据库。但您可以在 SDCard 中导出数据库,然后在 SQLite 浏览器中打开。

标签: android sqlite


【解决方案1】:

您必须按照以下步骤来完成您的任务:-

  1. 连接您的设备并在调试模式下启动应用程序。

  2. 将数据库文件从您的应用程序文件夹复制到您的 SD 卡: 执行:

    ./adb -d shell "run-as com.yourpackge.name cat /data/data/com.yourpackge.name/databases/filename.sqlite > /sdcard/filename.sqlite"

  3. 将数据库文件拉到你的机器上:执行:

    ./adb pull /sdcard/ 执行:./adb

  4. 安装 Firefox SQLLite 管理器:https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/

  5. 打开 Firefox SQLLite 管理器并打开上面第 3 步中的数据库文件。

【讨论】:

  • 数据为空,如何复制数据库?见here
【解决方案2】:
private void importDB() {
        try {
            File sd = Environment.getExternalStorageDirectory();
            File data = Environment.getDataDirectory();
                if (sd.canWrite()) {
                String currentDBPath = "//data//" + "<package name>"
                        + "//databases//" + "<database name>";
                String backupDBPath = "<backup db filename>"; // From SD directory.
                File backupDB = new File(data, currentDBPath);
                File currentDB = new File(sd, backupDBPath);

            FileChannel src = new FileInputStream(currentDB).getChannel();
            FileChannel dst = new FileOutputStream(backupDB).getChannel();
            dst.transferFrom(src, 0, src.size());
            src.close();
            dst.close();
            Toast.makeText(getApplicationContext(), "Import Successful!",
                    Toast.LENGTH_SHORT).show();

        }
    } catch (Exception e) {

        Toast.makeText(getApplicationContext(), "Import Failed!", Toast.LENGTH_SHORT)
                .show();

    }
}

private void exportDB() {
    try {
        File sd = Environment.getExternalStorageDirectory();
        File data = Environment.getDataDirectory();

        if (sd.canWrite()) {
            String currentDBPath = "//data//" + "<package name>"
                    + "//databases//" + "<db name>";
            String backupDBPath = "<destination>";
            File currentDB = new File(data, currentDBPath);
            File backupDB = new File(sd, backupDBPath);

            FileChannel src = new FileInputStream(currentDB).getChannel();
            FileChannel dst = new FileOutputStream(backupDB).getChannel();
            dst.transferFrom(src, 0, src.size());
            src.close();
            dst.close();
            Toast.makeText(getApplicationContext(), "Backup Successful!",
                    Toast.LENGTH_SHORT).show();

        }
    } catch (Exception e) {

        Toast.makeText(getApplicationContext(), "Backup Failed!", Toast.LENGTH_SHORT)
                .show();

    }
}

这里是reference

【讨论】:

    【解决方案3】:

    转到Android Studio->查看->工具窗口->设备文件资源管理器->数据->数据->选择你的包->数据库->你可以查看你的数据库

    【讨论】:

      【解决方案4】:

      您可以使用 facebook 的 stetho 来调试任何 android 本机应用程序。您可以通过在依赖项中包含 stetho 来实现这一点。然后在完成后在覆盖的 oncreate 方法中的主应用程序类中初始化 stetho,确保清单配置为您的应用类。可以查看https://code.tutsplus.com/tutorials/debugging-android-apps-with-facebooks-stetho--cms-24205

          dependencies {
              compile 'com.facebook.stetho:stetho:1.5.0'
              compile 'com.facebook.stetho:stetho-okhttp:1.5.0'
              } 
      

      那么你可以使用 Stetho.initializeWithDefaults(this); 初始化 stetho 在应用程序运行时转到 chrome://inspect 然后在 websql 下您将能够查看数据库中的所有表并编写查询来操作数据库

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-28
        • 1970-01-01
        • 2014-05-10
        • 2013-10-31
        • 2015-09-25
        • 1970-01-01
        相关资源
        最近更新 更多