phenomLi / Blog

Comments, Thoughts, Conclusions, Ideas, and the progress.
219 stars 17 forks source link

SQLite调试教程 #18

Open phenomLi opened 6 years ago

phenomLi commented 6 years ago

在android开发里,要做数据持久化,我们通常可以选择SharedPreferences或者android自带的关系型数据库SQLite。但是一般来讲SharedPreferences只适合于存放一些离散的数据,比如设置项,或者其他的客户端信息。而对于大量的,重复的数据,最好是使用SQLite进行存放。
但是我们进行数据库开发的时候,为了检测表中的数据是否发生了更变,通常需要一些可视化的工具帮助我们调试。SQLite也是一样,但是我们不能直接在文件管理器看到SQLite的信息,但是我们可以利用下面的工具进行SQLite的调试。


传统的方法:使用adb进行调试

adb是AndroidSDK中自带的调试工具,使用adb可以调试android的各种操作,当然也可以调试SQLite。

使用此方法前首先要确认配置好了当前操作系统的环境变量

1.首先我们使用adb shell命令进入adb:

2.然后使用su进入管理员模式(不然限权不够):

3.进入SQLite文件的存放目录,目录是/data/data/你的包名/databases

4.进入了目录之后,我们就可以查看SQLite的数据库了。使用sqlite3 你的数据库名称.db命令进入数据库
我的数据库名称是notes。
5.进入某个数据库之后,使用.tables命令可以查看当前数据库下的所有表:
NotesTable是我新建的表,而android_metadata是android系统内置的表,不必理会。
6.到了这一步之后,基本大功告成了,想要查看表中哪些元组,直接敲sql语句就行,切记末尾一定要加空格,不然不能识别:



更好的选择:使用SQLiteStudio

说实话,传统的adb方式未免有些反人类,每次调试都要敲sql语句的确有些恶心。幸好我们有更好的选择:SQLiteStudio,一个SQLite的可视化工具,貌似是免费的,反正有了它以后就不用再Terminal里面敲各种sql了,爽爆。
SQLiteStudio的配置过程想比adb或许有些繁琐,但是想要用好东西有些付出不是很正常嘛。
1.首先下载好SQLiteStudio(废话)。
2.在SQLiteStudio的 设置->插件->Database support 中勾选 Android SQLite:

3.因为SQLiteStudio是通过端口访问设备(不管是虚拟设备还是USB设备)的,所以要在AndroidManifest中申请网络权限:

4.在SQLiteStudio中点击 工具->Get Android connector JAR file,选择你的项目的lib文件夹,生成一个连接文件:

5.回到AS,在你的项目,右键->Open Module Settings,如图所示,选择刚刚生成的连接文件,将其引入到你的项目中:

6.接下来这一步非常重要,首先在项目中importSQLiteStudio的连接文件,然后我们要在要使用SQLite的Activity中的onCreate生命周期钩子中,并且在实例化DatabaseHelper之后(一定要在之后,不然会出错!)实例化并开始我们的SQLiteStudio连接:

建议在onDestroy生命周期钩子中释放连接,不然当Activity被销毁时端口还会一直被占用。

到了这一步就基本完成了,之后我们就要在SQLiteStudio连接你的数据库了。
7.用USB连接你的android设备或者打开你的模拟器(一定要,不然会找不到设备!),回到SQLiteStudio,选择 数据库->添加数据库,数据类型选择Android SQLite,这时会看见你的设备(我这里是模拟器),然后也会显示你设备里面的数据库(如果有的话),其他选项默认就好,不用动。

8.添加之后,(如无意外)就会看见数据库里面的情况了,熟悉navicat的,应该很快就能上手。