Android数据库高手秘籍(一)——SQLite命令

简介:

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/38461239

要想熟练地操作不论什么一个数据库。最最主要的要求就是要懂SQL语言,这也是每一个程序猿都应该掌握的技能。虽说SQL博大精深。要想精通确实非常难。但最主要的一些建表命令。增删改查,大家还是必须要学会的。

SQL(Structured Query Language)是一种标准的数据库查询语言,即全部的关系型数据库都会支持它。仅仅只是每种数据库对SQL语言的支持与标准存在着细微的不同。我们无须关心其他数据库对SQL语言的支持情况,这里我们仅仅要把重点放在SQLite上就能够了。以下我将使用模拟器来对SQLite支持的各种命令进行演示,假设你想用手机的话也能够。但要确保你的手机已经Root,而且包括sqlite3这个命令文件。

首先确保模拟器已经连接上了电脑,然后在命令行输入adb shell进入控制台。例如以下图所看到的:


注意#符号表示我们当前已经是超级用户了,假设显示的是$符号,表示当前仅仅是普通用户而已,这时还须要输入su命令切换一下用户身份才行。

有了超级用户权限之后,我们能做的事情就非常多了,这里我们先查看一下系统自带的联系人表吧。

进入到/data/data文件夹下,例如以下图所看到的:


全部应用程序的本地存储文件都是存放在这个文件夹以下的。为了要让不同应用程序之间的数据容易差别开来。Android是使用应用程序包名进行分开管理。也就是说每一个应用程序的本地存储文件都会存放在自己应用程序包名的那个文件夹下,这里我们ls一下看看有多少子文件夹:


OK,确实有非常多,毕竟手机上全部的应用程序都在这里。当中,com.android.providers.contacts中存放的就是联系人的相关数据,我们进入到这个文件夹再ls一下:


能够看到,眼下有databases、files、lib和shared_prefs这几个子文件夹。当中databases肯定是用于存放数据库文件的,files是用于存放普通文本文件的。lib是用于存放so库的,shared_prefs则是用于存放shared文件的。这是Android数据持久化的几种可选方式,对这部分内容不太了解的朋友能够參考《第一行代码——Android》的第六章。

接着进入到databases文件夹中,再ls:


当中后缀名为journal的文件是日志文件。我们不用管。contacts2.db和profile.db才是真正的数据库文件,能够使用sqlite3命令来打开数据库,例如以下图所看到的:


好的。数据库已经打开了。那么我们怎么才干知道当前数据库中有哪些表呢?非常easy,.table命令就能够做到了:


哇。居然有这么多张表!是的,联系人的数据结构非常复杂,非常多的数据都是分表存储的。

这里我们随便挑一张表,比方说accounts表,假设我想知道这张表中有哪些列应该怎么办呢?在MySQL中能够使用desc accounts这个命令,但SQLite却不认识这个命令。毕竟它们是有差异化的。SQLite中能够使用pragma table_info(TABLE_NAME)这个命令来查看表的数据结构,例如以下图所看到的:


能够看到。一共显示了三条结果,表示accounts表中共同拥有三列。

可是,全部的字段都缩在了一行里面。并用“|”符号分隔。这样我们非常难看出每一个字段的含义。非常easy,仅仅须要换一种显示模式即可了。比方说line模式就挺不错的。输入.mode line命令切换显示模式,然后又一次执行pragma命令。结果例如以下图所看到的:


怎么样,这样就清晰多了吧?这三列的列名各自是account_name、account_type和data_set。数据类型都是TEXT(字符串)。同意为空,而且都不是主键。好,那我如今想查一查accounts表中的数据呢?这就太简单了。使用select语句就能够了,例如以下所看到的:


恩?怎么仅仅有一条空数据啊。貌似模拟器上默认就是这样的。假设你用的是手机的话。这里应该就能够查到真正的数据了。只是没关系。我们能够在设置里面手动加入一个邮箱账户。例如以下图所看到的:


如今再来又一次查询一遍accounts表,例如以下所看到的:


OK,加入的新账户已经成功查出来了。

除了查询命令之外。还有其他的增删改命令都和标准的SQL语法是同样的,即insert、delete和update。因为比較简单。我就不再赘述了。比較值得一提的是,每一个SQLite数据库中都另一个隐藏的sqlite_master表,这里记载了当前数据库中全部表的建表语句,能够使用select * from sqlite_master命令进行查看:


结果太多了是不是?一屏根本就显示不下嘛。

不要着急。别忘了我们使用的是select命令,能够使用where语句来过滤出我们想要查询的那部分内容,例如以下图所看到的:


OK,CREATE TABLE accounts (account_name TEXT, account_type TEXT, data_set TEXT) 这就是accounts表的建表语句了。通过这样的方式我们能够查询到随意一张表的建表语句,从而对我们学习和分析数据库表结构有所帮助。

有些朋友可能会认为,每次都要输入select命令来查询表中的数据太麻烦了。没错,而且还要保证手机是连接在电脑上的时候才干查询,确实太不方便。幸运的是,有些手机软件已经提供了数据库表查询的功能,使得我们随时随地都能够方便地查看数据库中的数据,比方Root Explorer这款软件就不错。

仍然是确保你的手机已经Root,然后安装Root Explorer,打开软件之后依照我们前面介绍的路径。进入/data/data/com.android.providers.contacts/databases。点击contacts2.db数据库。选择内置数据库查看器,然后随便点击一张表就能够查看到里面的数据了,例如以下图所看到的:


使用这样的方法。我们能够随时查看数据库表中的最新数据。直观又方便,在程序开发的时候能够起到非常大的帮助。

好了,今天的解说就到这里,下篇文章当中我将带领大家探究Android数据库中很多其他的奥秘。感兴趣的朋友请继续阅读 Android数据库高手秘籍(二)——创建表和LitePal的基本使用方法 。









本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5092976.html,如需转载请自行联系原作者


相关文章
|
2月前
|
缓存 Unix Android开发
Android安卓项目调试之Gradle 与 Gradle Wrapper的概念以及常用gradle命令深度详解-优雅草卓伊凡
Android安卓项目调试之Gradle 与 Gradle Wrapper的概念以及常用gradle命令深度详解-优雅草卓伊凡
267 8
|
2月前
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
239 0
|
6月前
|
XML 数据库 Android开发
Android数据库的使用(增删改查)
本文介绍了一个简单的数据库操作Demo,包含创建数据库、增删改查功能。通过5个按钮分别实现创建数据库、插入数据、删除数据、更新数据和查询数据的操作。代码结构清晰,适合初学者学习Android SQLite数据库基础操作。
183 5
|
6月前
|
数据库 Android开发
Android外部数据库的引用
简介:本文介绍了在Android项目中引用外部数据库的方法。首先,将现成的数据库文件放入项目的`assets`文件夹中(需手动创建)。其次,在APP引导界面通过代码将数据库拷贝至App目录下,确保数据库可用。最后,对数据库进行增删改查等操作。关键步骤包括判断数据库是否存在、使用`AssetManager`读取数据库文件并写入App私有目录,实现外部数据库的顺利集成与使用。
|
6月前
|
数据库 Android开发 开发者
Android常用的room增删改查语句(外部数据库)
本文分享了将一个原生数据库驱动的单词APP重构为使用Room库的过程及遇到的问题,重点解决了Room中增删改查的常用语句实现。文章通过具体示例(以“forget”表为例),详细展示了如何定义实体类、Dao接口、Database类以及Repository和ViewModel的设计与实现。同时,提供了插入、删除、更新和查询数据的代码示例,包括模糊查询、分页加载等功能。此外,针对外部数据库导入问题,作者建议可通过公众号“计蒙不吃鱼”获取更多支持。此内容适合有一定Room基础的开发者深入学习。
219 0
Android常用的room增删改查语句(外部数据库)
|
5月前
|
存储 Oracle 关系型数据库
oracle数据恢复—oracle数据库执行错误truncate命令的数据恢复案例
oracle数据库误执行truncate命令导致数据丢失是一种常见情况。通常情况下,oracle数据库误操作删除数据只需要通过备份恢复数据即可。也会碰到一些特殊情况,例如数据库备份无法使用或者还原报错等。下面和大家分享一例oracle数据库误执行truncate命令导致数据丢失的数据库数据恢复过程。
|
7月前
|
SQL 数据库连接 数据库
在C++的QT框架中实现SQLite数据库的连接与操作
以上就是在C++的QT框架中实现SQLite数据库的连接与操作的基本步骤。这些步骤包括创建数据库连接、执行SQL命令、处理查询结果和关闭数据库连接。在实际使用中,你可能需要根据具体的需求来修改这些代码。
421 14
|
7月前
|
SQL 数据可视化 IDE
开发数据库不想写命令?YashanDB Developer Center 帮你轻松搞定
YashanDB Developer Center(YDC)是一款可视化的数据库开发工具,专为提升数据库开发效率而设计。它通过图形化对象管理让数据库对象清晰可见,提供智能SQL编辑器支持语法高亮与自动补全,实现PL调试的图形化操作,帮助快速定位问题。此外,操作记录可追溯,多端灵活部署,适配多种场景。无论是中大型企业研发团队,还是不熟悉命令行的业务开发者,YDC都能显著优化开发体验,堪称YashanDB的“可视化IDE”。
|
8月前
|
SQL 分布式计算 数据库
【YashanDB 知识库】Hive 命令工具 insert 崖山数据库报错
【YashanDB 知识库】Hive 命令工具 insert 崖山数据库报错
|
8月前
|
SQL 分布式计算 数据库
【YashanDB知识库】Hive 命令工具insert崖山数据库报错
【YashanDB知识库】Hive 命令工具insert崖山数据库报错

热门文章

最新文章