Android之SQLite数据库使用
转载整理于:http://my.csdn.net/lmj623565791
我刚开始接触Android的时候甚至都不敢相信,Android系统竟然是内置了数据库的!好吧,是我太孤陋寡闻了。由于我之前是从Web方向转过来的,对数据库方面的技术也是特别有偏好,当知道这一消息之后确实颇为惊喜。Android中内置的数据库是SQLite,而我之前做Web开发时最常用的数据库是MySQL,经过对比之后我发现这两个数据库极为相似,都支持标准的SQL语法,还遵循了数据库的ACID事务,所以只要你以前使用过其它的关系型数据库,就可以很快地上手SQLite。
本篇我将带领新童鞋通过dos窗口实现对sqlite数据库的查询、修改、删除、增加操作,下面我们就开始本篇的介绍。
SQL(Structured Query Language)是一种标准的数据库查询语言,即所有的关系型数据库都会支持它,只不过每种数据库对SQL语言的支持与标准存在着细微的不同。我们无须关心其它数据库对SQL语言的支持情况,这里我们只要把重点放在SQLite上就可以了。下面我将使用模拟器来对SQLite支持的各种命令进行演示,如果你想用手机的话也可以,但要确保你的手机已经Root,并且包含sqlite3这个命令文件。
首先确保模拟器已经连接上了电脑,然后在命令行输入adb shell进入控制台,如下图所示:

注意#符号表示我们当前已经是超级用户了,如果显示的是$符号,表示当前只是普通用户而已,这时还需要输入su命令切换一下用户身份才行。
有了超级用户权限之后,我们能做的事情就很多了,这里我们先查看一下系统自带的联系人表吧。进入到/data/data目录下,如下图所示:

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

OK,确实有很多,毕竟手机上所有的应用程序都在这里。其中,com.android.providers.contacts中存放的就是联系人的相关数据,我们进入到这个目录再ls一下:

接着进入到databases目录中,再ls:

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

好的,数据库已经打开了,那么我们怎么才能知道当前数据库中有哪些表呢?很简单,.table命令就可以做到了:

哇,竟然有这么多张表!是的,联系人的数据结构非常复杂,很多的数据都是分表存储的。这里我们随便挑一张表,比如说accounts表,如果我想知道这张表中有哪些列应该怎么办呢?在MySQL中可以使用desc accounts这个命令,但SQLite却不认识这个命令,毕竟它们是有差异化的。SQLite中可以使用pragma table_info(TABLE_NAME)这个命令来查看表的数据结构,如下图所示:

可以看到,一共显示了三条结果,表示accounts表中共有三列。但是,所有的字段都缩在了一行里面,并用“|”符号分隔,这样我们很难看出每个字段的含义。很简单,只需要换一种显示模式就行了,比如说line模式就挺不错的。输入.mode line命令切换显示模式,然后重新运行pragma命令,结果如下图所示:

怎么样,这样就清晰多了吧?这三列的列名分别是account_name、account_type和data_set,数据类型都是TEXT(字符串),允许为空,并且都不是主键。好,那我现在想查一查accounts表中的数据呢?这就太简单了,使用select语句就可以了,如下所示:

以上为通过Android自带的模拟器进行操作,下面介绍一下如何使用真机进行调试:
第一步:adb devices 命令:查看当前连接的手机;

可以看到手机名称出来了,说明我的手机已经连上adb了;
然后:adb shell :这个命令是进入shell命令界面,可以使用所有的linux命令;

切到data/data文章夹下:cd data/data

使用ls命令显示该文件夹下的所有文件试试:

访问被拒绝,这是因为没有Root权限,然后我们用su命令获取root权限:

在敲下su命令时,手机上会弹出需要root权限的允许,取消按钮,如图,(选择允许)
ok到这里关于如何通过dos窗口进行sqlite数据库操作的知识介绍完毕。
Android之SQLite数据库使用的更多相关文章
- Qt for Android 打包 SQLite 数据库
Qt for Android 调用 SQLite 数据库时, 怎样将已经存在的数据库附加到 APK 中? 直接在你项目里面的Android源码的根目录下新建一个文件夹assets, 数据库就可以放里面 ...
- Android实现SQLite数据库联系人列表
Android实现SQLite数据库联系人列表 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个通讯录查看程序: 要求使用SQLite ...
- Android中SQLite数据库操作(1)——使用SQL语句操作SQLite数据库
下面是最原始的方法,用SQL语句操作数据库.后面的"Android中SQLite数据库操作(2)--SQLiteOpenHelper类"将介绍一种常用的android封装操作SQL ...
- android中sqlite数据库的基本使用和添加多张表
看了很多关于android使用sqlite数据库的文章,很多都是介绍了数据库的建立和表的建立,而表通常都是只建立一张,而实际情况我们用到的表可能不止一张,那这种情况下我们又该怎么办呢,好了,下面我教大 ...
- android 一个SQLite数据库多个数据表的基本使用框架 (带demo)
android 一个SQLite数据库多个数据表(带demo) 前言 demo演示 一.搭建 二.建立实体类 三.建立数据库操作类 ...
- Android之SQLite数据库篇
一.SQLite简介 Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大. 二.SQLite的特点 1.轻量级使用 SQLit ...
- android安卓Sqlite数据库实现用户登录注册
看了很多别人写的安卓SQlite数据的操作代码,一点也不通俗易懂,我觉得我写的不错,而且安卓项目也用上了,所以在博客园里保存分享一下!建立一个类 并继承SQLiteOpenHelper public ...
- Android中SQLite数据库小计
2016-03-16 Android数据库支持 本文节选并翻译<Enterprise Android - Programing Android Database Applications for ...
- android 对sqlite数据库的增删改查等各种操作
转载:http://blog.csdn.net/vrix/article/details/6717090 package com.sqlite.main; import java.io.File; i ...
随机推荐
- 对抗密码破解 —— Web 前端慢 Hash
(更新:https://www.cnblogs.com/index-html/p/frontend_kdf.html ) 0x00 前言 天下武功,唯快不破.但在密码学中则不同.算法越快,越容易破. ...
- 【开源】分享2011-2015年全国城市历史天气数据库【Sqlite+C#访问程序】
由于个人研究需要,需要采集天气历史数据,前一篇文章:C#+HtmlAgilityPack+XPath带你采集数据(以采集天气数据为例子),介绍了基本的采集思路和核心代码,经过1个星期的采集,历史数据库 ...
- H5坦克大战之【画出坦克】
今天是个特殊的日子,圣诞节,也是周末,在这里先祝大家圣诞快乐!喜庆的日子,我们可以稍微放松一下,扯一扯昨天雷霆对战凯尔特人的比赛,这场比赛大威少又双叒叕拿下三双,而且是一个45+11+11的超级三双, ...
- MySQL碎碎念
1. 如何修改Mysql的用户密码 mysql> update mysql.user set password=password('hello') where user='root'; mysq ...
- JQuery easyUI DataGrid 创建复杂列表头(译)
» Create column groups in DataGrid The easyui DataGrid has ability to group columns, as the followin ...
- Smarty的基本使用与总结
含义: Smarty是PHP的一个引擎模板,可以更好的进行逻辑与显示的分离,即我们常说的MVC,这个引擎的作用就是将C分离出来. 环境需求:PHP5.2或者更高版本 我使用的环境是:PHP5.3,wi ...
- maven 快照
大型应用软件一般由多个模块组成,一般它是多个团队开发同一个应用程序的不同模块,这是比较常见的场景.例如,一个团队正在对应用程序的应用程序,用户界面项目(app-ui.jar:1.0) 的前端进行开发, ...
- Java企业实训 - 01 - Java前奏
前言: 虽然个人专攻.NET方向,不过由于个人是干教育行业的,方方面面的东西,不能说都必须精通,但肯定多少都会涉及到. 一个菜鸟学员,从啥都不会,经过一步步学习,最后到企业上手掌管一个模块甚至一个项目 ...
- Linux基础介绍【第一篇】
Linux简介 什么是操作系统? 操作系统,英文名称Operating System,简称OS,是计算机系统中必不可少的基础系统软件,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心 ...
- Spring MVC注解开发入门
注解式开发初步 常用的两个注解: @Controller:是SpringMVC中最常用的注解,它可以帮助定义当前类为一个Spring管理的bean,同时指定该类是一个控制器,可以用来接受请求.标识当前 ...