【问题标题】:Change Path of Database in Android Studio在 Android Studio 中更改数据库路径
【发布时间】:2015-01-12 09:58:56
【问题描述】:

我在 Android Studio 的 Sqlite 中使用 openOrCreateDatabase 保存了一个数据库。我知道它保存在 Android 设备的根文件夹中(特别是数据/数据),但我看不到原始数据库文件。

我在 Studio 中尝试了 adb shell 命令和 Android 设备管理器,但看不到它。

有没有办法在不root手机的情况下更改数据库的路径或访问data/data中的数据库?

【问题讨论】:

    标签: java android sqlite


    【解决方案1】:

    你不能在没有root设备的情况下访问数据文件夹。

    但您可以将数据库从数据文件夹复制到 SD 卡,例如下载文件夹

    File backupDB = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "Database.db");
    File currentDB = context.getDatabasePath(DATABASE_NAME);
    if (currentDB.exists()) {
        FileChannel src = new FileInputStream(currentDB).getChannel();
        FileChannel dst = new FileOutputStream(backupDB).getChannel();
        dst.transferFrom(src, 0, src.size());
        src.close();
        dst.close();
    }
    

    你也需要权限

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    

    【讨论】:

    • 我有几个澄清(要了解为什么使用该代码) 1.我在哪里插入权限? 2. src 和 dst 是做什么的? 3. sd 卡是内部存储更新设备吗(对不起这里的菜鸟) 4. 此代码是否更新您创建的备份数据库?
    • 1.将权限添加到 AndroidManifest.xml 文件 2. src 它是原始数据库的输入流,dst 它是数据库新副本的输出流 3. 不明白 4. 它只是从应用程序复制您的数据库。到一些存储没有别的。
    • 最后一件事,我放置数据库的目录是在下载文件夹中吗?我可以创建一个文件夹来放置 dbase 吗?
    • 是的,您可以创建新文件夹,然后将数据库复制到那里,详细信息:stackoverflow.com/a/2131051/2055854
    • 我已经尝试了 oncreate 函数中的代码 为什么 context.getDatabasePath 中的上下文说无法解析符号?并且文件输入输出和src close和dst closd说:unhandled excpetion java.io.filenotfound and java.io.IOexception
    【解决方案2】:

    要查看应用程序数据文件夹中的内容,您可以使用run 命令和as,如下所示

    adb shell
    $ run-as package.name
    

    现在您将可以访问指定应用程序的数据文件夹。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-11
      • 1970-01-01
      • 2017-03-22
      相关资源
      最近更新 更多