如何在Android Studio中使用ADB查看SQLite数据库
我需要查看我的SQLite数据库,但我不知道该怎么做。 我去了http://www.sqlite.org/download.html并下载了我的操作系统的命令行shell,但是当我运行程序并键入adb ...
我得到错误。
注意:我使用的是Android Studio,所以我假设我不需要额外安装任何东西,因为我记得Android Studio说它具有所有需要的SDK工具。
最简单的方法:通过ADB Shell连接到Sqlite3
我还没有find任何方式在Android Studio中这样做,但我用远程shell访问数据库,而不是每次都拉动文件。
在这里查找所有信息: http : //developer.android.com/tools/help/sqlite3.html
1-在命令提示符下转到您的platform-tools文件夹
2-input命令adb devices
以获取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
4a-您可以绕过根设备上的此步骤
run-as <your-package-name>
4b-导航到包含您的数据库文件的文件夹:
cd data/data/<your-package-name>/databases/
5运行sqlite3连接到你的数据库:
sqlite3 <your-db-name>.db
6-运行你喜欢的sqlite3命令:
Select * from table1 where ...;
注意:find更多命令在下面运行。
SQLite的cheatsheet
有几个步骤来查看SQLite数据库中的表:
-
列出数据库中的表格:
.tables
-
列出表格的外观:
.schema tablename
-
打印整个表格:
SELECT * FROM tablename;
-
列出所有可用的SQLite提示符命令:
.help
最简单的方法是使用Android设备监视器来获取数据库文件和SQLite数据库浏览器来查看该文件,同时仍然使用Android Studio来编程android。
1)使用Android Studio的Android模拟器运行并启动数据库应用程序。 (我插入一些数据到数据库应用程序来validation)
2)运行Android设备监视器。 如何运行? 转到[your_folder] > sdk >tools
。 你可以在该文件夹中看到monitor.bat。 shift + right click
在文件夹内shift + right click
并select“ Open command window here
”。 此操作将启动命令提示符。 型monitor
和Android设备监视器将启动。
3)select你当前正在运行的模拟器。 然后转到data>data>[your_app_name]>databases
4)点击图标(位于右上angular)(hover在图标上,你会看到“从设备上拉一个文件”),并保存你喜欢的任何地方
5)启动SQLite数据库浏览器。 将刚刚保存的文件拖放到该浏览器中。
6)转到Browse Data
选项卡,并select您的表来查看。
你遇到的问题是常见的,在文档中没有很好的解释。 正常的设备不包括sqlite3数据库二进制文件,这就是为什么你得到一个错误。 Android Emeulator,OSX,Linux(如果已安装)和Windows(已安装后)都有二进制文件,因此您可以在本地机器上打开数据库。
解决方法是将数据库从您的设备复制到本地计算机。 这可以用亚行来完成,但需要一些步骤。
在开始之前,您需要一些信息:
- SDK的path(如果不包含在您的操作系统环境中)
- 你的
<package name>
,例如com.example.application
- 放置数据库的
<local path>
,例如。~/Desktop
或%userprofile%\Desktop
接下来,您将需要了解每个命令在下面的例子中写入第一个字符的terminal是不是打字,但是让你知道我们在什么shell:
-
>
=你的操作系统命令提示符 -
$
= ADB shell命令提示符 -
!
= ADBshell作为pipe理员命令提示符 -
%
接下来从terminal或命令中input以下命令(不要在()
input第一个字符或文本)
> adb shell $ su ! cp /data/data/<package name>/Databases/<database name> /sdcard ! exit $ exit > adb pull /sdcard/<database name> <local path> > sqlite3 <local db path> % .dump % .exit (to exit sqldb)
这是将数据库复制到本地计算机并在本地读取数据库的一种方法。 有SO和其他资源解释如何从模拟器安装sqlite3二进制到您的设备,但一次访问此过程的作品。
如果你需要交互地访问数据库,我会build议在模拟器(已经有sqlite3)中运行你的应用程序,或者在您的devices / xbinpath上安装sqlite 。
键入adb时提到的是什么?
step1. >adb shell step2. >cd data/data step3. >ls -l|grep "your app package here" step4. >cd "your app package here" step5. >sqlite3 xx.db
- 打开一个terminal
-
cd <ANDROID_SDK_PATH>
(对于我在Windows上的cd C:\Users\Willi\AppData\Local\Android\sdk
) -
cd platform-tools
-
adb shell
(只有在只有一个模拟器正在运行时才有效) -
cd data/data
-
su
(获得超级用户权限) -
cd <PACKAGE_NAME>/databases
-
sqlite3 <DB_NAME>
- 发出SQL语句( 重要的是:用
;
结束它们,否则语句不会被发出,而是换行)。
注意:如果您需要列出目录内容,请使用ls
(Linux)或dir
(Windows)。
根据设备,你可能在adb shell中找不到sqlite3命令。 在这种情况下,你可能想要遵循这个:
adbshell
$ run-as package.name
$ cd ./databases/
$ ls -l#查找当前权限 – r = 4,w = 2,x = 1
$ chmod 666 ./dbname.db
$ exit
$ exit
adb pull /data/data/package.name/databases/dbname.db〜/ Desktop /
adb push〜/ Desktop / dbname.db /data/data/package.name/databases/dbname.db
adbshell
$ run-as package.name
$ chmod 660 ./databases/dbname.db #Restore原始权限
$ exit
$ exit
以供参考去https://stackoverflow.com/a/17177091/3758972 。
按照上述步骤,可能会出现“找不到远程对象”的情况。 然后在adb shell中将数据库文件夹的权限更改为755。
$ chmod 755数据库/
但请注意,它只能在android版本<21上运行。
你可以使用一个叫做Stetho
的非常好的工具,把Stetho
添加到build.gradle
文件中:
compile 'com.facebook.stetho:stetho:1.4.1'
并在你的Application
或Activity
onCreate()
方法中初始化它:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Stetho.initializeWithDefaults(this); setContentView(R.layout.activity_main); }
然后你可以在地址中查看chrome中的dblogging:
chrome://inspect/#devices
有关更多详细信息,您可以阅读我的文章: 如何轻松地查看您的数据库logging
- validation错误WPF风格,类似于Silverlight
- 使用entity framework(.edmx模型)&Razor视图&&将数据库logging插入多个表创buildMVC3的下拉列表
- “领域迁移需要”,android中的exception,而从领域数据库检索值
- 无法在Android上加载libGL.so
- Facebook SDK 4.10上的NPE:尝试调用空对象引用上的接口方法java.lang.Object com.facebook.inject.Lazy.get()
- IntelliJ IDEA渲染错误
- 如何在Android中dynamic添加button?
- Android中的stringdate/时间对象
- 在Android Studio中更改大括号的样式
- Android INSTALL_FAILED_UID_CHANGED
- 如何在Android Text View中显示双引号(“)符号