介绍多种调试、管理SQLite数据库的方法。
01、数据库调试
在开发数据库相关应用时少不了访问数据库以获取开发相关信息。早期最常用的方式是使用adb shell命令(如果有多台设备就使用adb -s emulator-5554 shell命令,具体的设备名称可以使用adb devices命令获取)。操作步骤如下:
(1) 输入adb shell命令进入Android模拟器命令行界面。
(2) 输入su命令进入root模式(真实的Android设备要进入root模式以后才行)。
(3) 输入cd /data/data/com.xiaj/databases/命令进入mydb.db所在目录。
(4) 输入sqlite3 mydb.db命令进入mydb.db数据库。此时提示符变为sqlite>。
(5) 输入.table命令可以查看数据表。注意,table前有一个点。
(6) 输入“select * from Score;”语句可查询表记录。
输入命令级显示结果如下所示:
可以输入inert、delete、update命令对数据表中的记录执行增、删、改操作。但此种方法有两个缺点:
(1) 进入/data/data目录需要root权限。真实的Android设备需要刷机才能获取root权限,但也意味着失去厂商保修资格。
(2) 当输入的SQL命令中包含中文时会显示为乱码(早期版本的Windows 10还需先运行chcp 65001命令才能在查询结果中显示中文,最新版本的Windows 10无须再输此命令)。
简单的替代方法是开发人员在App中单独开发一个Activity,输入预置的SQL语句来查询数据。但如果面对的是复杂多样的查询或数据表结构改变操作,此方法有点力不从心。此时各式各样的插件应运而生,有的插件在Android应用中提供Web服务,开发人员可以通过浏览器访问数据库,此类插件的实时交互性有待改善。有的插件在Android中提供中转服务,再由客户端提供图形化实时交互操作界面,典型的代表就是SQLiteStudio。以下以SQLiteStudio方式讲解实时管理Android设备上的SQLite数据库。
打开SQLiteStudio应用程序,选择“工具”→“打开配置对话框”菜单,如图1所示。
■ 图1选择“工具”→“打开配置对话框”菜单
在弹出的配置对话框中选择“插件”选项,选中Android SQLite复选框,如图2所示,单击OK按钮。
■ 图5-20选中Android SQLite复选框
此时“工具”菜单中多出一项Get Android connector JAR file,如图3所示。
单击此菜单项下载SQLiteStudioRemote.jar文件。
将下载的SQLiteStudioRemote.jar文件放到Android项目的libs目录下(如果没有就新建libs目录)。在app目录下的build.gradle文件中添加如下配置(具体路径视文件所在路径而定):
在Activity的onCreate()方法中添加以下代码:
此时运行Android项目,SQLiteStudio的服务就同步启动。
最后配置SQLiteStudio连接App的数据库。在SQLiteStudio软件中选择“添加数据库”菜单,在“数据库”对话框中选择数据类型为Android SQLite。单击Android database URL图标,在弹出的对话框中选中USB cable-port forwarding单选按钮,如图4所示,单击OK按钮。
■ 图4配置数据库连接
连接数据库成功后就可以实时查看、修改SQLite数据库,如图5所示。
■ 图5SQLiteStudio运行界面
SQLiteStudio软件的数据库管理功能非常完善,完全能满足开发要求,连接真实的Android设备也没有问题。
Android Studio从4.1版本开始引入Database Inspector功能,可以连接API level 26以上版本的SQLite数据库连接。选择View→Tool Windows→Database Inspector菜单,在下方出现Database Inspector选项卡,运行App程序,出现如图6所示的界面。界面左边显示数据库及所包含的表。单击图片按钮,界面右侧出现查询选项卡,在文本框中输入SQL语句,单击Run按钮执行相应的SQL命令。数据的变更可以实时显现(单击Run按钮可实时查询表记录。如果选中图5-24的Live updates复选框,App中对表数据的修改会自动更新显示)。此方案是目前连接数据库并实现实时查询操作的最简单方案。但功能上与SQLiteStudio方案相比还有较大的差距(如在图形化界面中修改表结构等)。
■ 图6SQLiteStudio运行界面
SQLiteStudio软件的数据库管理功能非常完善,完全能满足开发要求,连接真实的Android设备也没有问题。
Android Studio从4.1版本开始引入Database Inspector功能,可以连接API level 26以上版本的SQLite数据库连接。选择View→Tool Windows→Database Inspector菜单,在下方出现Database Inspector选项卡,运行App程序,出现如图5-24所示的界面。界面左边显示数据库及所包含的表。单击图片按钮,界面右侧出现查询选项卡,在文本框中输入SQL语句,单击Run按钮执行相应的SQL命令。数据的变更可以实时显现(单击Run按钮可实时查询表记录。如果选中图5-24的Live updates复选框,App中对表数据的修改会自动更新显示)。此方案是目前连接数据库并实现实时查询操作的最简单方案。但功能上与SQLiteStudio方案相比还有较大的差距(如在图形化界面中修改表结构等)。