Skip to content

SQLite调试教程 #18

Open
Open
@phenomLi

Description

@phenomLi
Owner

在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的,应该很快就能上手。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @phenomLi

        Issue actions

          SQLite调试教程 · Issue #18 · phenomLi/Blog