Android面试整理之SQLite数据库——如何管理SQLite数据库

来源:互联网 发布:windows左下角图标 编辑:程序博客网 时间:2024/06/05 21:13

1. 使用SQLite的官方管理工具,它是一个命令行工具,在android的SDK中自带了sqlite3.exe(我的在目录E:\SDK\platform-tools下)。

  为了使用方便,需将其路径注册到系统环境变量path中,即将:%Android_Home%加在path中,这样只运行sqlite3,就能直接打开sqlite管理工具了。

在这个命令行工具中可以执行两种命令:SQL命令和控制台命令-----

A.其中SQL命令必须以分号(;)结尾

B.控制台命令必须以实心点(.)结尾,如:

.help    ------------------显示帮助信息

.quit    ------------------退出控制台信息

.tables  ------------------查看数据库的表列表 

.exit    ------------------退出sqlite命令行

  具体操作步骤如下(参考博客:http://www.linuxidc.com/Linux/2011-06/37135.htm)


在上图中,除了最后一个红色的方框,其它方框都是adb shell下的命令。

【1】在Android程序中,一般创建的数据库存放在 /data/data/[应用程序包名]/databases 的目录下。

【2】cd 命令:文件夹跳转命令。ls命令:查看某个文件夹下面有哪些文件。

【3】使用"sqlite3 [数据库名称] " 命令来对某数据库进行一系列的操作。

【4】在经过第【3】步骤后,可以使用.tables 命令查看某数据库中包含哪些表。若要查询某表中包含的数据,在 sqlite> 命令后输入查询的SQL语句即可查询,但要注意的是要以分号[;]来结束该语句的输入。

【5】若在命令行中输入 adb shell 后,提示:adb不是内部或外部命令,也不是可运行的程序,或批处理文件,遇到这种情况是由于环境变量没有设置好的问题导致的。解决方法:在安装的Android sdk 包目录下的找到adb工具所在目录,一般是在...\android-sdk-windows\tools目录或者在...\android-sdk-windows\platform-tools目录下。把该目录添加到path环境变量中就OK了。

下图是我运行时的截图:



由于出现 sqlite3 notfound 错误,时间关系所以没再继续往下了,下次再用这种方法,这种问题可参考下面两篇博客解决。

http://blog.csdn.net/myairen1365/article/details/21026767

http://www.android100.org/html/201303/19/1897.html

2.为了更方便地管理SQLite数据库,也可以使用第三方的可视化数据库管理工具,例如SQLiteExpert Professional, 这是一种较为流行的基于Windows平台的SQLite数据库管理工具。

 具体操作步骤如下:

 若是真机运行程序里的数据库,要先执行以下步骤:

用真机测试时,通常在Android studio或Eclipse的DDMS(真机中程序运行时,连上电脑,Android studio里的Android Device Monitor就可看到)点不开data文件夹,这样就查看不了真机里的数据库。

需要在linux中改变手机数据库访问权限(即能在DDMS中打开真机中的数据库)

Step1.用有root权限的真机

Step2.cmd中进入SDK下的platform-tools目录



Step3.按照以下命令行一步步输入

E:\SDK\platform-tools>    adb shell  

$    su      

#    chmod  777  data 

#    cd  data

#    chmod  777  data

#    cd  data

#    chmod  777  com.example.hyh.cgmms(要访问的包名)

#    ls

----------成功之后显示手机中所有的安装包的名称-------(这一步就可以进入data/data目录了,但还是进不了要访问的包com.example.hyh.cgmms)

#    cd com.example.hyh.cgmms(要访问的包名)

 

#    chmod 777  databases

#    cd databases

#    ls

-----------------此时只可以看到有哪些数据库,并没有对数据库操作的权限

#    chmod 777 XXX.db(要访问的数据库的名称)

---------------此时,才真正搞定,才能用第三方软件查看SQLite数据库

备注:每一行命令后都要加“回车符”执行,参考资料

http://www.programgo.com/article/79103073074/

展示一下这个过程:

 

DDMS中成功后显示如下:


  真机完成上述步骤后,可执行下面步骤导出Device中的数据库数据(模拟器可跳过上述步骤)
Step1.通过file explorer-> data ->data,找到运行的项目包名,点击“database”,找到你所创建的数据库名称,我这里是“TcBluetooth.db”


Step2.选中数据库“TcBluetooth.db”,右上角有3个亮着的按钮,分别是数据导出电脑、其他数据导入到模拟器和删除,这里我们点击第一个,自己选择一个位置进行保存。



Step3.运行SQLite expert Personal,点击file -> open database ,选择数据库,选择表,即可查看数据,实现数据库的管理


Ps:此处在打开软件SQLite expert Personal 时,出现错误access violation at address,按照下列方法试了半天,又出现:您不能在64位可执行文件上设置DEP属性
无奈,卸载后重新下载安装了一下软件,还是同样的错误,多次循环捣鼓,不知怎么出现一个兼容报告,说程序上次运行错误,然后,再打开程序,就莫名好了,奇怪!





1 0