位置: 编程技术 - 正文

Android数据库高手秘籍:SQLite命令(安卓端数据库)

编辑:rootadmin

推荐整理分享Android数据库高手秘籍:SQLite命令(安卓端数据库),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android 数据库管理,android对数据库版本进行管理的方法,android数据库的特点,安卓端数据库,安卓端数据库,android 数据库app,android 数据库app,android 数据库app,内容如对您有帮助,希望把文章链接给更多的朋友!

要想熟练地操作任何一个数据库,最最基本的要求就是要懂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命令来打开数据库,如下图所示:

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

Android数据库高手秘籍:SQLite命令(安卓端数据库)

哇,竟然有这么多张表!是的,联系人的数据结构非常复杂,很多的数据都是分表存储的。这里我们随便挑一张表,比如说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语句就可以了,如下所示:

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

现在再来重新查询一遍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 单行gridview横向滑动的实现 android单行gridview横向滑动的实现首先重写下GridViewHorizontalGridView.javapublicclassHorizontalGridViewextendsGridView{publicHorizontalGridView(Contextcontext,AttributeSetattrs){super(co

Android手机界面的各种状态 屏幕黑:会发SCREEN_OFF广播,屏幕黑原因有如下:OFF_BECAUSE_OF_USER:用户按下POWER键,当前是否处于锁屏界面,若是(mShowing)则重置显示界面,否则重新显示

android问题解决 1、Anerroroccurredwhileautomaticallyactivatingbundlecom.android.ide.eclipse.adteclipse启动之后报这个错误,重启Eclipse问题依旧。解决方式:cmd模式下定位到到eclipse路径运

标签: 安卓端数据库

本文链接地址:https://www.jiuchutong.com/biancheng/378105.html 转载请保留说明!

上一篇:Activity生命周期讲解(activity生命周期的方法)

下一篇:Android手机界面的各种状态(安卓手机界面设计)

  • 水利建设专项资金收入优惠政策
  • 进出口贸易公司需要什么资质
  • 盈余公积发放现金股利分录怎么写
  • 兼职会计负责的工作内容
  • 预收账款哪一方是增加
  • 收付实现制有应收应付吗
  • 发票第二年是否可以作废
  • 无息贷款合同要按手印吗
  • 旅游业小规模纳税人的认定标准是什么
  • 建筑施工企业收到工程款会计分录
  • 不能计入外购固定资产成本的相关税费
  • 实收资本印花税怎么申报税目
  • 上月开票次月开红票销项税额有什么影响?
  • 案例分析个人心得体会
  • 货币资金闲置对企业偿债能力的影响
  • 无法查明原因的现金溢余计入什么科目?
  • 补提以前年度摊销
  • 开具红字发票后又开了蓝字发票 怎么入账
  • 专用发票右上角的数字表示什么
  • 出口退税的账务关键是什么
  • 出口企业取得失业保险
  • 新会计制度下如何做账
  • 新手应该怎么样
  • 上网的操作
  • 汇算清缴是哪个报表
  • 如何在windows中添加输入法
  • php中url什么意思
  • fsmb32.exe是什么进程 作用是什么 fsmb32进程查询
  • 贷款损失会计处理
  • 电脑麦克风没声音是什么原因
  • 如何通过无线路由器连接打印机
  • 实收资本和注册资本不一致的会计处理
  • echart设置legend
  • php常用字符串
  • 财务费用属不属于当期损益
  • 饭店的手撕发票可以报销吗
  • 城市维护建设税减免税优惠政策
  • 程序员才能看懂的梗
  • remote远程
  • cookie set
  • 按月申报的税种
  • java获取resources下文件路径
  • 成本费用利润率越高越好吗
  • 国家为什么要征收各种税
  • 实收资本不能动吗
  • 金税盘长期不使用
  • 以前未入账固定资产补入账政府会计
  • 外币账户的设置在哪里
  • 2021年废铁回收
  • 企业计提固定资产折旧以什么假设为前提
  • 工程材料费发票没拿到是否能预提费用?
  • 补计提去年所得税会影响当月资产
  • 进项税转出金额怎么算
  • 合并报表非同控为什么调公允
  • 帮客户支付的机票计入什么科目
  • 管理不善造成的存货盘亏损失计入什么科目
  • 关于文化事业建设费的说法错误的是
  • 进项发票超过期限不认证怎么办
  • 年终建账于年初建账,在录入期初余额时有什么不一样?
  • 分配服务器失败
  • win10系统电脑如何共享
  • 预览pdf文件
  • microsoft skypeapp
  • 做ghost备份
  • linux 修复系统
  • win10闹钟软件
  • win7系统c盘占用空间大
  • windows 8
  • Linux系统怎么用命令行打开软件
  • Win10 Mobile Build 14269版截图曝光:脱胎换骨 速度飙升
  • python标准库很庞大,它可以帮助处理各种工作,包括
  • eclipse如何调节字体
  • js复制div
  • jquery插件开发方法
  • jquery中遍历指定的对象和数组是哪个方法
  • 盗梦英雄限时占卜顺序
  • Unity Enemy behaviour
  • 营改增后一般纳税人动产租赁税率
  • 司法拍卖车免除扣分吗
  • 地税服务大厅上班时间
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设