当前位置: 首页 > 知识库问答 >
问题:

以编程方式在文件中获取应用程序sqlite数据库

湛博易
2023-03-14

我想把我的sqlite DB文件上传到DropBox。但在此之前,我需要在代码中获取sqlite Db文件。如何在任何设备上执行此操作?我查看了这个链接,它说用户需要root权限才能访问数据库。

所以简而言之:

如何使用非根设备访问我的sqlite数据库?egFile f=new File("path_to_db_file");

如果这种方法不可行,我如何将我的应用程序数据库保存在一个可以访问它的地方?

如果我能解释什么,请告诉我。提前谢谢

共有3个答案

封锐藻
2023-03-14

工作代码示例

try {

 File Db = new File("/data/data/your.package/databases/yourdatabasename");        
 Date d = new Date();         

 File file = new File(your_destination.db);

  //if file was created earlier the delete the old file
  if (file.exists()) {
      file.delete();
  }
  
   //create new file
  file.createNewFile();
  file.setWritable(true);

 copyFile(new FileInputStream(Db), new FileOutputStream(file));

}catch (Exception e) {
        e.printStackTrace();
}
穆浩皛
2023-03-14

我不知道如何编程,但使用Rooted Device,我们可以从设备获取数据库,因为我们必须将您的应用程序权限作为超级用户,并从您的应用程序包名称和过去复制到您的SD卡和Access。

景永望
2023-03-14

是的,你可以,这样的东西在没有root许可的情况下对我有效:

File Db = new File("/data/data/your.package/databases/yourdatabasename");        
Date d = new Date();         

File file = new File("your_destination.db");
file.setWritable(true);

copyFile(new FileInputStream(Db), new FileOutputStream(file));

复制文件是这样的函数,并且在两个方向上工作DB-

public static void copyFile(FileInputStream fromFile, FileOutputStream toFile) throws IOException {
    FileChannel fromChannel = null;
    FileChannel toChannel = null;
    try {
        fromChannel = fromFile.getChannel();
        toChannel = toFile.getChannel();
        fromChannel.transferTo(0, fromChannel.size(), toChannel);
    } finally {
        try {
            if (fromChannel != null) {
                fromChannel.close();
            }
        } finally {
            if (toChannel != null) {
                toChannel.close();
            }
        }
    }
}
 类似资料:
  • 问题内容: 我正在为android应用程序开发自动化测试(使用Robotium)。为了确保测试的一致性和可靠性,我想以干净状态(正在测试的应用程序)开始每个测试。为此,我需要清除应用数据。可以在“设置/应用程序/管理应用程序/ [我的应用程序] /清除数据”中手动完成此操作 以编程方式完成此操作的推荐方法是什么? 问题答案: 您可以使用包管理器工具清除已安装应用的数据(类似于按设备上应用设置中的“

  • 我正在构建一个应用程序,在注销后需要清除缓存和本地存储数据。 我的注销方法调用clearCache()方法。我正在使用cordova存储插件。 缓存和本地存储正在清理,但当我转到 设置- 如何像手动一样以编程方式清除应用程序数据?

  • 我正在尝试使用我自己的应用程序实现或扩展的ResourceConfig或PackageResourceConfig来配置我的Jersey应用程序。因此,我的第一次尝试是将现有的web.xml(实际上,由于开发的库性质,我使用的是web-fragment.xml)配置移植到MyApplication实现。 当我使用第二个版本时,我会收到以下信息 正如您所看到的,是第一个注册的类,但由于它不是公共的,

  • 我指的是:https://docs.microsoft.com/en-us/graph/api/user-get?view=graph-rest-1.0 并试图获取所需的用户详细信息。 我的问题是,如何获取任何特定用户ID的字段详细信息(sbx、cn、uid、mail、jobtitle)? 这个想法是使用微软图形应用编程接口找到任何用户详细信息(上面的任何字段,如果不是全部的话)。 我试过这个:

  • 问题内容: 如何在 不终止VM的情况下以* 编程方式关闭 Spring Boot 应用程序? * 在其他作品中, 问题答案: 关闭a 基本上意味着关闭基础。该方法为您提供了一个。您可以自己动手做。 例如, 或者,您可以使用 帮助程序方法来帮助您。例如,

  • 如何在不终止VM的情况下以编程方式关闭一个spring boot应用程序? 在其他作品中,…的反义词是什么