Android数据库操作(一)——基本SQLite命令

1、前言

SQLite数据库系统特点

轻型,嵌入式,ACID关系型数据库

SQLite优缺点
  • 优点:

轻量、高效
绿色无需“安装”
零配置
动态数据类型

  • 缺点:

并发性能
网络文件支持弱
仅支持SQL功能子集,有很多高级的功能不支持

Android平台上的Sqlite数据库用途

APP运行数据的保存,如参数等
离线功能
数据处理

Android平台SQLite使用

  • 具体使用两个类
  • SQLiteDatabase类:封装了管理数据库的各种方法,如insert、delete、update、query
  • SQLiteOpenHelper类:封装了数据库创建和版本管理

2、SQLite命令

本节摘抄自: Android数据库高手秘籍(一)——SQLite命令强烈建议进入原博客查看学习

  • 首先确保模拟器已近连接上了电脑

  • 命令行输入 adb shell 进入控制台,如下图所示:

    adb shell

注意:#符号表示我们当前已经是超级用户了,如果显示$符号,表示当前只是普通用户而已,这时还需输入su命令切换一下用户身份才行。

  • 有了超级用户权限之后,就可以做很多事情了,如:查看一下系统自带的联系人表
  • 通过命令行 cd data/data 进入到 /data/data目录下,如下图所示:
    cd data/data

所有应用程序的本地存储文件都是存放在这个目录下面的。

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

子目录有很多,手机上所有应用程序都在这里,其中 com.android.providers.contacts就是存放联系人的相关数据

  • 通过命令行 cd 包名ls 进入查看该包下的目录:
    cd 具体包名+ls

可以看到,目前有databases、files、lib和shared_prefs这几个子目录。其中databases肯定是用于存放数据库文件的,files是用于存放普通文本文件的,lib是用于存放so库的,shared_prefs则是用于存放shared文件的,这是Android数据持久化的几种可选方式。

  • 接着进入到databases目录中,再 ls
    cd databases + ls

其中后缀名为journal的文件是日志文件,我们不用管,contacts2.dbprofile.db才是真正的数据库文件

  • 使用sqlite3命令 sqlite3 数据库文件全名 来打开数据库,如下图所示:

    sqlite3 数据库文件名

  • 好的,数据库已经打开了,那么我们怎么才能知道当前数据库中有哪些表呢?

  • 输入命令行 .table 就可以查看当前数据库中的表:

    **.table**

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

  • SQLite中可以使用pragma table_info(TABLE_NAME);这个命令来查看表的数据结构,大致如下图所示:

    pragma table_info(表名)

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

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

  • 貌似模拟器上默认就只有一条空数据,如果你用的是手机的话,这里应该就可以查到真正的数据了。不过没关系,我们可以在设置里面手动添加一个邮箱账户,如下图所示:


  • 现在再来重新查询一遍accounts表,如下所示:


    20140901221137578.png
  • 除了查询命令之外,还有其它的增删改命令都和标准的SQL语法是相同的,即insert、delete和update,由于比较简单,不再赘述了。比较值得一提的是,每个SQLite数据库中都还有一个隐藏的sqlite_master表,这里记载了当前数据库中所有表的建表语句,可以使用select * from sqlite_master命令进行查看:

  • 结果太多了是不是?一屏根本就显示不下嘛。不要着急,别忘了我们使用的是select命令,可以使用where语句来过滤出我们想要查询的那部分内容,如下图所示:


**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数据库,选择内置数据库查看器,然后随便点击一张表就可以查看到里面的数据了,如下图所示:


  • 使用这种方法,我们可以随时查看数据库表中的最新数据,直观又方便,在程序开发的时候可以起到非常大的帮助。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容