Android模拟器在哪里存储SQLite数据库?

我正在开发一个将数据存储在SQLite数据库中的Android应用程序。 我的问题是,当您使用模拟器时,此数据库文件存储在文件系统中的哪个位置?

我已经看到它存储在

/data/data/package_name/databases

但我需要知道实际映射到我本地机器硬盘的位置。 即使在关闭机器之后,数据库仍会在模拟器的多次运行中持续存在,因此它不能只驻留在RAM中...

I82Much asked 2019-07-16T16:59:16Z

7个解决方案

121 votes

以下评论中提到的更新:

您不再需要处于DDMS透视图,只需从Eclipse Window打开文件资源管理器> 显示视图> 其他......似乎应用程序不需要运行,我可以浏览不同的应用程序文件内容。我   运行ADB版本1.0.29

或者,您可以尝试旧的方法:

在Eclipse IDE上打开DDMS透视图

(Window> Open Perspective> Other> DDMS)

而最重要的是:

你的申请必须是运行所以你可以看到文件夹和文件的层次结构。

然后在文件资源管理器选项卡中,您将遵循以下路径:

数据> 数据> 你的包名> 数据库>你的数据库文件。

然后选择文件,单击屏幕右上角的磁盘图标下载.db文件。 如果要将数据库文件上载到模拟器,可以单击电话图标(在磁盘图标旁边)并选择要上载的文件。

如果你想查看.db文件的内容,我建议你使用SQLite数据库浏览器,你可以在这里下载。

PS:如果要从真实设备中查看数据库,则必须将手机设为root。

rogcg answered 2019-07-16T17:01:43Z

55 votes

模拟器的文件系统未映射到硬盘驱动器上的目录。 模拟器的磁盘映像存储为映像文件,您可以通过Eclipse(在工具栏中查找G1外观图标)或通过模拟器二进制文件本身进行管理(运行“emulator -help”以获取选项说明)。

您最好从命令行使用adb来插入正在运行的模拟器。 如果您可以获取特定目录和文件名,则可以执行“adb pull”以将数据库文件从仿真器中取出并放到常规硬盘驱动器上。

编辑:删除了这也适用于无根设备的建议 - 它仅适用于模拟器和以root身份运行adb的设备。

Eric Mill answered 2019-07-16T16:59:51Z

17 votes

其他答案严重过时。 使用Android Studio,这是这样做的方法:

点击工具> Android> Android设备监视器

单击文件资源管理器

导航到您的db文件,然后单击“保存”按钮。

Yuchen Zhong answered 2019-07-16T17:02:34Z

6 votes

我写了一个简单的bash脚本,它将数据库从android设备拉到你的计算机上(Linux,Mac用户)

文件名:android_db_move.sh用法:android_db_move.sh com.example.app db_name.db

#!/bin/bash

REQUIRED_ARGS=2

ADB_PATH=/Users/Tadas/Library/sdk/platform-tools/adb

PULL_DIR="~/"

if [ $# -ne $REQUIRED_ARGS ]

then

echo ""

echo "Usage:"

echo "android_db_move.sh [package_name] [db_name]"

echo "eg. android_db_move.sh lt.appcamp.impuls impuls.db"

echo ""

exit 1

fi;

echo""

cmd1="$ADB_PATH -d shell 'run-as $1 cat /data/data/$1/databases/$2 > /sdcard/$2' "

cmd2="$ADB_PATH pull /sdcard/$2 $PULL_DIR"

echo $cmd1

eval $cmd1

if [ $? -eq 0 ]

then

echo ".........OK"

fi;

echo $cmd2

eval $cmd2

if [ $? -eq 0 ]

then

echo ".........OK"

fi;

exit 0

Tadas Valaitis answered 2019-07-16T17:03:07Z

5 votes

由于问题不仅限于Android Studio,因此我给出了Visual Studio 2015的路径(为Xamarin工作)。

找到上图中提到的数据库文件,然后单击图2中所示的“拉”按钮。

将文件保存在所需的位置。

您可以使用SQLite Studio或DB Browser for SQLite打开该文件。

特别感谢这个问题的其他回答者。

Foyzul Karim answered 2019-07-16T17:04:05Z

4 votes

数据库作为SQLite文件存储在/ data / data / PACKAGE / databases / DATABASEFILE中,其中:

PACKAGE是在AndroidManifest.xml中声明的包(标签“manifest”,属性“package”)

DATABASEFILE是调用SQLiteOpenHelper构造函数时传递的名称,如下所述:[http://developer.android.com/guide/topics/data/data-storage.html#db]

您可以在“文件资源管理器”选项卡中选择DDMS透视图,在模拟器中查看(从/向文件系统复制)数据库文件。

caligari answered 2019-07-16T17:05:00Z

3 votes

简单的解决方案 - 适用于仿真器和放大器。 连接设备

1请参阅当前可用的设备/模拟器列表。

$ adb devices

附加设备列表

G7NZCJ015313309器件仿真器-5554器件

9885b6454e46383744设备

2在设备/模拟器上运行备份

$ adb -s emulator-5554 backup -f ~/Desktop/data.ab -noapk com.your_app_package.app;

3提取data.ab

$ dd if=data.ab bs=1 skip=24 | openssl zlib -d | tar -xvf -;

您将在/db文件夹中找到该数据库

Mick answered 2019-07-16T17:06:10Z

android模拟器的数据存放,Android模拟器在哪里存储SQLite数据库?相关推荐

  1. Android App开发基础篇—数据存储(SQLite数据库)

    Android App开发基础篇-数据存储(SQLite数据库) 前言:Android中提供了对SQLite数据库的支持.开发人员可以在应用中创建和操作自己的数据库来存储数据,并对数据进行操作. 一. ...

  2. 数据导入(excel读取,存储进数据库【多表】)

    QQ:1187362408 欢迎技术交流和学习 数据导入(excel读取,存储进数据库[多表]),业务需求 TODO: 1,选择导入地区 2,数据校验: (角色类别[1]:一个用户具有多角色      ...

  3. android手动创建数据表,Android开发—数据库应用—手动创建(SQLite)数据库--手动创建数据表(table)...

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:数据库应用-手 ...

  4. Android在未root手机获取应用内置的SQLite数据库到电脑上处理的方法(数据库备份与恢复-支持SDK30+)

    在android中我们常用sqlite数据库来存放文件,在开发中我们可能需要查看数据库中的所有的数据,以保证数据的准确性.在已经root的手机下,我们可以进入 data/data/包名/databas ...

  5. android获取mysql数据_java – Android从mySql获取数据

    我必须从服务器上的MySQL数据库中获取一些数据.我有以下代码.但是当我运行它时应用程序崩溃了.即使我在Android Manifest中指定了Internet权限,我也会在Logcat中获得Perm ...

  6. android传输注册数据异常,android数据传值再获取的问题

    初学,这段代码也是在网上找的 开发选用的SDK是4.0,ADT是5.0,测试手机是4.4.4 在Layout_1中的传递代码 Intent intentSimple = new Intent(); i ...

  7. Android数据存储——SQLite数据库(模板)

    本篇整合Android使用数据库,要保存一个实体类的样本. 首先看一下数据库语句: ORM:关系对象映射 添加数据: ContentValues values = new ContentValues( ...

  8. android 备份游戏数据,用于Android游戏存档备份和存档还原的教程(图形中的详细信息)...

    现在有越来越多的Android游戏,并且更新越来越快. 许多玩家由于滑动或更新而意外删除了游戏,这使得难以玩的游戏档案会立即消失,或者钦佩他人的完美表现. 档案希望免费使用,下面为所有人介绍常见And ...

  9. android的json数据解析,Android数据解析-JSON解析

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,基于JavaScript(Standard ECMA-262 3rd Edition - December ...

最新文章

  1. LeetCode简单题之最长的美好子字符串
  2. AndroidStudio 生成Jar并混淆
  3. docker mysql 无权限_Docker 中级篇
  4. ICC_lab总结——ICC_lab6:版图完成
  5. Arduino 端口通信实例
  6. Promise学习笔记
  7. Linux系统编程13:进程入门之Linux中的环境变量的概念及其相关命令(export;env等)main函数的参数
  8. (福利)中秋灯谜,猜中有奖
  9. 使用jquery检查/取消选中复选框? [重复]
  10. php_字符编码浅谈_积累中。。。
  11. ORACLE 登录相关的信息
  12. SPI协议的通信原理
  13. 字节跳动-大数据研发面试准备
  14. Retrofit 使用 DELETE 方式
  15. 周末加班,中午吃饭时看到了马总的一条新闻
  16. C++面试宝典 知识点集锦
  17. 歌曲计算机教案反思,幼儿园音乐公开课教案及反思三篇
  18. 前端性能优化之优化图片
  19. Win7 64bit 安装AutoCAD 2008
  20. 使用设计模式出任CEO迎娶白富美(7)–建造者模式解决工艺复杂问题

热门文章

  1. MPB:山东农大高峥、周波等-​​​尾菜堆肥微生物组样品取样方法
  2. BBI综述:在微生物组研究中使用宏转录组
  3. MPB:基于BIOLOG的微生物群落功能分析
  4. 高分文章精选 | 纳米孔宏基因组测序的表现
  5. python语言标号_Python 编码为什么那么蛋疼?
  6. R语言ggplot2可视化:使用长表数据(窄表数据)( Long Data Format)可视化多个时间序列数据、在同一个可视化图像中可视化多个时间序列数据(Multiple Time Series)
  7. R语言KMeans聚类分析确定最优聚类簇数实战:间隙统计Gap Statistic(确定最优聚类簇数)
  8. R语言stringr包str_dup函数字符串多次复制实战
  9. R语言sd函数计算数值标准差实战(Standard Deviation)
  10. R语言使用fs包的dir_create函数在指定路径下创建新的文件夹、使用file_create函数在指定文件夹下创建文件