我一直在使用 Android Studio 来开发我的应用程序,因为它已经发布。
直到最近,一切都运行良好,我必须与检查数据库文件一起调试。由于我不知道如何直接查看数据库,因此当我调试生成数据库文件时,我必须将数据库文件从手机导出到PC。
为了做到这一点,我必须打开DDMS > File Explorer
。一旦我打开DDMS,我就必须重新连接USB,我就失去了调试线程。检查数据库文件后,我必须关闭DDMS并再次重新连接USB以返回调试模式。
这太复杂了。有没有人有更好的方法在Android Studio中执行此操作(我知道它在Eclipse中更容易)?
答案 0 :(得分:269)
编辑:要在模拟器上查看数据库,请按以下步骤操作(对于实际设备,请滚动到底部):
将数据库从设备复制到PC:
Android Studio版本< 3.0 强> :
通过Tools > Android > Android Device Monitor
点击左侧的设备 你应该看到你的申请:
转到文件资源管理器(右侧的其中一个标签),转到/data/data/databases
只需点击即可选择数据库。
转到Android设备监视器窗口的右上角。点击“ 从设备中提取文件 ”按钮:
将打开一个窗口,询问您要保存数据库文件的位置。 保存在您的PC上随时随地。
Android Studio版本> = 3.0 :
通过View > Tool Windows > Device File Explorer
转到data > data > PACKAGE_NAME > database
,其中PACKAGE_NAME是您的软件包的名称(上例中的 com.Movie )
右键单击数据库并选择Save As...
。 保存在您的PC上随时随地。
现在,打开您安装的 SQLiteBrowser 。单击“打开数据库”,导航到保存数据库文件的位置,然后单击打开。您现在可以查看数据库的内容。
转到this Github存储库并按照自述文件中的说明操作,以便能够在您的设备上查看您的数据库。你得到的是这样的:
就是这样。但是,在发布应用程序之前,您应该撤消所有这些步骤。
答案 1 :(得分:185)
我在Android Studio中找不到任何方法,但是我使用远程shell访问数据库,而不是每次都提取文件。
在此处查找所有信息: http://developer.android.com/tools/help/adb.html#sqlite
1-在命令提示符中转到platform-tools文件夹
2-输入命令adb devices
以获取设备列表
C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb devices
List of devices attached
emulator-xxxx device
3-将shell连接到您的设备:
C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb -s emulator-xxxx shell
4-导航到包含db文件的文件夹:
cd data/data/<your-package-name>/databases/
5-运行sqlite3连接到你的db:
sqlite3 <your-db-name>.db
6-运行你喜欢的sqlite3命令,例如:
Select * from table1 where ...;
注意:查找下面要运行的更多命令。
在SQLite数据库中查看表有几个步骤:
列出数据库中的表格:
.tables
列出表格的外观:
.schema tablename
打印整个表格:
SELECT * FROM tablename;
列出所有可用的SQLite提示命令:
.help
答案 2 :(得分:68)
不使用模拟器时最简单的方法
$ adb shell
$ run-as your.package.name
$ chmod 777 databases
$ chmod 777 databases/database_name
$ exit
$ cp /data/data/your.package.name/databases/database_name /sdcard
$ run-as your.package.name # Optional
$ chmod 660 databases/database_name # Optional
$ chmod 660 databases # Optional
$ exit # Optional
$ exit
$ adb pull /sdcard/database_name
我有一段时间没有测试过这个。它可能不适用于API&gt; = 25。 如果cp命令不起作用,请尝试以下操作之一:
# Pick a writeable directory <dir> other than /sdcard
$ cp /data/data/your.package.name/databases/database_name <dir>
# Exit and pull from the terminal on your PC
$ exit
$ adb pull /data/data/your.package.name/databases/database_name
第一个块将数据库的权限配置为可读。这会利用run-as
,允许您模拟您的软件包的用户进行更改。
$ adb shell
$ run-as your.package.name
$ chmod 777 databases
$ chmod 777 databases/database_name
$ exit # Closes the shell started with run-as
接下来,我们将数据库复制到世界可读/可写目录。这允许adb pull用户访问。
$ cp /data/data/your.package.name/databases/database_name /sdcard
然后,替换现有的读/写权限。这对您的应用程序的安全性很重要,但是在下次安装时将替换这些权限。
$ run-as your.package.name
$ chmod 660 databases/database_name
$ chmod 660 databases
$ exit # Exit the shell started with run-as
最后,将数据库复制到本地磁盘。
$ exit # Exits shell on the mobile device (from adb shell)
$ adb pull /sdcard/database_name
答案 3 :(得分:39)
在 Android Studio 3 及更高版本中,您可以在Android Studio的右下方看到“设备文件资源管理器”部分。
打开它,然后你可以看到文件树,你可以在这条路径中找到一个应用程序数据库:
/data/data/{package_name}/databases/
答案 4 :(得分:21)
最后,我找到了一个最简单的解决方案,无需打开DDMS。
实际上,解决方案基于@Distwo所提到的,但它不一定非常复杂。
首先,请记住设备中数据库文件的路径,它应该相同。
例如我的是:/data/data/com.XXX.module/databases/com.XXX.module.database
第二次,执行此命令将数据库文件拖到PC上
adb pull /data/data/com.XXX.module/databases/com.XXX.module.database /Users/somePathOnYourPC/
您需要做的只是复制并存储此命令,然后您可以反复使用它。
第三次,如果您获得了拒绝权限或类似内容,只需在上一个命令之前运行adb root
。
答案 5 :(得分:15)
答案 6 :(得分:7)
在完成所有解决方案后,我会建议
使用 Stethos
让我们看看它有多简单
在build.gradle文件中添加以下依赖项
compile 'com.facebook.stetho:stetho:1.5.0'
compile 'com.facebook.stetho:stetho-js-rhino:1.4.2'
然后转到mainActivity onCreate方法 添加以下行
Stetho.initializeWithDefaults(this);
这将要求您
import com.facebook.stetho.Stetho;
现在从android studio运行应用程序时,打开Chrome并在地址栏中输入
chrome:// inspect /
在资源选项卡中> Web SQL 检查数据库和表 轻松实时地玩
答案 7 :(得分:5)
要知道你在android studio中创建的sqlite数据库存储位置,你需要按照简单的步骤:
1.Run your application
2.Go to Tools--->Android---->Device Monitor
3.Find your application name in left panel
4.Then click on File Explorer tab
5.Select data folder
6.Select data folder again and find your app or module name
7.Click on your database name
8.On right-top window you have an option to pull file from device.
9.Click it and save it on your PC
10.Use FireFox Sqlite manager to attach it to your project.
有关详细信息,此链接将非常有用。 http://www.c-sharpcorner.com/UploadFile/e14021/know-where-database-is-stored-in-android-studio/
要查看db文件中的数据,您需要下载sqlite浏览器或在任何浏览器中添加相同的插件,这样您就需要在浏览器中打开文件并查看数据。
下载浏览器以下是显示包含注册数据库的浏览器的屏幕截图
谢谢,
答案 8 :(得分:5)
Android 4.1 Canary 5 Preview中引入的新数据库检查器,您现在可以从IDE-https://developer.android.com/studio/preview/features?linkId=86173020#database-inspector
直接在运行的应用程序中检查,查询,修改和调试SQLite数据库还支持数据库实时查询-https://developer.android.com/studio/preview/features?linkId=86173020#query
答案 9 :(得分:4)
最简单的方法是连接设备并运行Android Studio 然后从工具栏:
另一种方法是使用Stetho库:
向您的build.gradle添加Stello依赖项:
编译'com.facebook.stetho:stetho:1.5.0'
将以下行放在Application类或主活动的onCreate()上:
Stetho.initializeWithDefaults(this);
连接设备,运行应用程序,然后在Chrome上输入以下网站:
chrome:// inspect /#devices
就是这样。您现在可以浏览表格。
注意:建议移至生产环境之前删除依赖项。
答案 10 :(得分:3)
即使这是一个非常老的问题,但我认为今天仍然有意义。在最新版本的android studio中,我找到了一种查看方法[我不确定以前的版本中是否可用。 ]
这是您如何查看数据库中的数据的方法:
步骤:
转到查看>工具窗口>设备文件资源管理器
然后打开文件夹 data> data ,您将看到应用程序列表。
向下滚动一点,然后查看软件包 [您的软件包 应用]。
找到您的软件包后,请参见 databases 文件夹并选择文件,右 点击,然后保存 [下载]
由于您无法直接看到数据,因此有一个工具 SQLite的数据库浏览器, 转到网站 https://sqlitebrowser.org/
打开Db浏览器并单击打开数据库,然后选择数据库表 下载后,它将向您显示数据。
答案 11 :(得分:3)
在 Android Studio 中查看数据库内容的简便方法。
首先,在Android Studio中安装 Database Navigator 插件
第二,重新启动Android Studio
第三,将数据库保存到默认位置,例如: (C:\ Users \ User 名称\ Documents \ AndroidStudio \ DeviceExplorer \仿真器或设备\数据\数据\包名称\数据库)
第四,在 Database Navigator
中连接保存的 dbname_db 文件提供与步骤第三
中使用的数据库文件路径相同的路径即([C:\ Users \ User Name \ Documents \ AndroidStudio \ DeviceExplorer \ emulator或device \ data \ data \ package name \ databases \ package naem \ dbname_db)
最后,只需测试数据库连接并打开控制台,然后执行您想做的任何事情。
如果要刷新数据库,只需重复步骤第二,然后保存或刷新即可。
快乐的代码!!!!
答案 12 :(得分:2)
对于Android Studio 3.X
这里是SQLite Studio的链接: https://sqlitestudio.pl/index.rvt?act=download
答案 13 :(得分:2)
Android Studio 自 4.1 版起捆绑了 Database Inspector。
但它有一个限制:
<块引用>数据库检查器仅适用于 API 级别 26 及更高级别的 Android 操作系统中包含的 SQLite 库。它不适用于与您的应用捆绑在一起的其他 SQLite 库。
答案 14 :(得分:2)
随着Android Studio 4.1 Canary and Dev preview 的发布,您可以使用名为
的新工具。
安装AS 4.1+,运行应用程序,打开数据库检查器,现在您可以在数据库检查器面板的左侧查看数据库文件,然后选择表以查看内容。
您可以使用运行SQL 选项运行查询,或者如果您使用 Room 然后打开数据库检查器并运行应用程序,则可以在以下位置运行DAO查询:单击@Query
批注左侧的运行按钮来显示您的界面。
答案 15 :(得分:2)
打开Android Studio底部的设备文件浏览终端。
打开名为 Data 的文件夹,然后在Data内再次打开 Data 文件夹。
向下滚动文件夹列表,找到具有 your.package.name 的文件夹。打开文件夹 your.package.name > 数据库 。您得到 your.databaseName 。右键单击您的数据库名称,然后将其另存为C:/您的/计算机/目录。
转到C:/ your / Computer / Directory,使用DB SQLite
打开 your.databaseName答案 16 :(得分:1)
它是其他答案加上一个加号的组合
答案 17 :(得分:1)
如果您想从ANDROID STUDIO中浏览数据库,这就是我正在使用的内容:
转到“文件/设置/插件”并查找以下内容:
答案 18 :(得分:1)
最简单的方法是使用Android Debug Database库(在GitHub上为6.7k星)。
优势:
使用方法:
debugImplementation 'com.amitshekhar.android:debug-db:1.0.6'
添加到build.gradle (module)
; D/DebugDB: Open http://192.168.232.2:8080 in your browser
,该链接将有所不同)并在浏览器中将其打开; 重要提示:
adb forward tcp:8080 tcp:8080
有关更多信息,请访问GitHub上的library page。
答案 19 :(得分:1)
我不得不将数据库从手机拉到PC。现在我使用这个制作精良且免费的应用程序,它具有很多功能。它适用于API 4.1+
的 Rooted 设备。
如果您发现如何在没有root的情况下使其工作,请告诉我。
https://play.google.com/store/apps/details?id=com.lastempirestudio.sqliteprime
答案 20 :(得分:1)
我知道这个问题相当陈旧,但我相信这个问题仍然存在。
我创建了一个开发工具,您可以将其作为lib集成到您的Android应用程序项目中。该工具在您的应用中打开服务器套接字,以通过Web浏览器进行通信。您可以浏览整个数据库并直接通过浏览器下载数据库文件。
可以通过jitpack.io完成整合:
project build.gradle:
//...
allprojects {
repositories {
jcenter()
maven { url 'https://jitpack.io' }
}
}
//...
app build.gradle:
//...
dependencies {
//...
debugCompile 'com.github.sanidgmbh:debugghost:v1.1'
//...
}
//...
为了只在某些构建类型或产品风格中编译DebugGhostLib,我们需要一个抽象的Application类,它将以特殊的风格派生。将以下课程放在main
文件夹中(java
&gt; your.app.package
下):
public class AbstractDebugGhostExampleApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// Do your general application stuff
}
}
现在,对于您的发布版本类型(或产品风格),您将以下Application类添加到release
(或产品风格)文件夹(也在java
&gt; {{1}下面}):
your.app.package
这是不引用DebugGhostLib的应用程序类。
另请告诉您的public class MyApp extends AbstractDebugGhostExampleApplication {
@Override
public void onCreate() {
super.onCreate();
}
}
您正在使用自己的应用类。这将在您的AndroidManifest.xml
文件夹中完成:
main
现在,对于您的调试版本类型(或产品风格),您将以下Application类添加到<manifest package="demo.app.android.sanid.com.debugghostexample" xmlns:android="http://schemas.android.com/apk/res/android">
<!-- permissions go here -->
<application android:name=".MyApp"> <!-- register your own application class -->
<!-- your activities go here -->
</application>
</manifest>
(或产品风格)文件夹(也在debug
&gt; {{1}下面}):
java
您可以获得tool here。
答案 21 :(得分:1)
将您的android设备连接到计算机
在执行上述所有步骤之前,必须确保您具有访问文件:/data/data//database/databasefile.db的权限 权限 。
每次更新数据库数据时,都必须单击更新图标。
答案 22 :(得分:1)
我使用的是Windows 7,我的设备是一个模拟的Android设备API 23.我认为它对于任何真实设备都是一样的,只要它是root用户且API不高于23
转到工具 - &gt; Android - &gt; Android设备监视器。 转到文件资源管理器。就我而言,它位于数据/数据// app_webview / databases / file_0 / 1
中我必须在名为&#34; 1&#34;
的文件的末尾手动添加.db答案 23 :(得分:1)
这是一个非常古老的问题,我的回答类似于上面的一些答案,但做得更快。下面的脚本适用于Mac,但我确定有人可以为Windows修改它。
1)在Mac上打开脚本编辑器(您只需在Spotlight中搜索脚本编辑器)
2)复制并粘贴下面的文本,并使用您的SDK路径,包名等进行修改(见下文)
3)保存脚本!!
在下面的脚本中替换以下内容:
path_to_my_sdk ==&gt;&gt;为你的sdk提供完整的路径
my_package_name ==&gt;&gt;申请的包裹名称
myDbName.db ==&gt;&gt;数据库的文件名
set getLocalDb to "path_to_my_sdk/platform-tools/adb shell run-as my_package_name chmod 777 databases && path_to_my_sdk/platform-tools/adb shell run-as my_package_name chmod 777 databases/myDbName.db && path_to_my_sdk/platform-tools/adb shell run-as my_package_name cp databases/myDbName.db /sdcard/myDbName.db && path_to_my_sdk/platform-tools/adb pull /sdcard/myDbName.db /Users/User/Desktop/myDbName.db"
do shell script getLocalDb
希望这有助于某人。
答案 24 :(得分:0)
这可能不是您正在寻找的答案,但我没有更好的方法从手机下载数据库。我建议的是确保你使用这个mini-DDMS。如果你没有点击程序最左边的非常小的camoflage框,它将是超级隐藏的。 (试图将鼠标悬停在它上面,否则你可能会错过它。)
还有没有过滤器的下拉菜单(右上角)。它实际上有很多不同的方法可以通过PPID,名称和更多来监控不同的流程/应用程序。我一直用这个来监控手机,但请记住,我没有做那种需要120%肯定的开发工作,数据库没有做出与众不同的事情。
希望有所帮助
答案 25 :(得分:0)
按照上述步骤在Android Device Explorer中打开应用程序的数据库文件夹,在那里您可以看到六个文件,前三个文件名为android,后三个文件名为您的数据库名称。您只需要处理最后三个文件,就可以将这三个文件保存在您的首选位置。您可以通过右键单击文件并单击另存为按钮来保存这些文件(例如,我将数据库命名为room_database,因此将三个文件分别命名为room_database,room_database-shm和room_database-wal。 :-
1) room_database to room_database.db
2) room_database-shm to room_database.db-shm
3) room_database-wal to room_database.db-wal
现在在任何SQLite浏览器中打开第一个文件,这三个文件将全部填充到浏览器中。
答案 26 :(得分:0)
最后,Android Studio通过“数据库检查器”选项卡支持此功能。您可以轻松地应用查看/更新/查询操作。目前尚不处于稳定状态,但是您可以尝试使用Android Studio 4.1 Canary 5和更高版本。
您可以看到数据库检查器的外观here
您可以下载适当的版本here
答案 27 :(得分:0)
我想知道为什么这里没有提到这个解决方案!
...在 Android Studio 4.1 及更高版本中...
<?php
//Sentence Code
if(!empty($sentence)){
if (strlen($sentence) > 20) {
$newstring = subtr($sentence, -9);
} else {
echo 'ERROR! Your sentence is too short. At least 20 characters are required.</br>';
}
}
?>
1.Run your app on an emulator or connected device running API level 26 or higher.
2.Select View > Tool Windows > Database Inspector from the menu bar.
3.Select the running app process from the dropdown menu.