背景
在手机上,我们经常会需要查看手机上的数据库去定位一些问题,这时如果能够直接进入手机终端,然后通过命令行去查询数据库,那将是一件非常方便的事情。
前提条件
由于计划要访问手机里 /data/data/
下的某个应用数据库,所以手机需要获取 root 权限,才能访问这个用户数据目录。
本文以 /data/data/com.android.providers.media/databases/external.db 系统媒体库为例,进行讲述。
常用命令
1. 进入手机终端
> adb shell
2. 进入 external.db 数据库
> sqlite3 external.db
3. 显示数据库
sqlite> .database
输出:
sqlite> .database
main: /data/data/com.android.providers.media/databases/external.db
注:上面大于号前面有 「sqlite」表示已经进入 sqlite 数据库,这条命令是在 sqlite 终端执行的。
4. 显示数据库中的表
sqlite> .tables
输出:
sqlite> .tables
album_art audio_genres log
album_info audio_genres_map search
albums audio_genres_map_noid searchhelpertitle
android_metadata audio_meta thumbnails
artist_info audio_playlists video
artists audio_playlists_map videothumbnails
artists_albums_map files
audio images
5. 根据 _id 查询 images 表
sqlite> select * from images where _id=‘333’;
输出:
sqlite> select * from images where _id=‘333’;
333|/storage/emulated/0/Pictures/各种分辨率/480-720/126351Z4562460-3211461.jpg|263141|126351Z4562460-3211461.jpg|image/jpeg|126351Z4562460-3211461|1558000996|1321585798||||||1321585798000|0||-1395347199|480-720|480|720|244
6. 显示表头
sqlite> .head on
执行完上面这条命令后,再执行步骤5中的查询语句,显示结果中会将表头字段也展示出来,见下面输出的黑体字部分。这样就可以知道查询出来的每个值代表的是哪个字段了。
输出:
sqlite> select * from images where _id=‘333’;
_id|_data|_size|_display_name|mime_type|title|date_added|date_modified|description|picasa_id|isprivate|latitude|longitude|datetaken|orientation|mini_thumb_magic|bucket_id|bucket_display_name|width|height|parent
333|/storage/emulated/0/Pictures/各种分辨率/480-720/126351Z4562460-3211461.jpg|263141|126351Z4562460-3211461.jpg|image/jpeg|126351Z4562460-3211461|1558000996|1321585798||||||1321585798000|0||-1395347199|480-720|480|720|244
7. 帮助详解
sqlite> .help
查看帮助信息。
8. 其他
进入到 sqlite 终端后,就可以对表进行 「增删改查」命令了,跟普通的 sql 命令没有区别,这里就不再进行拓展了。
欢迎关注我的公众号,一起进步!