Android——sqlite3 基本命令操作
平时用到database的地方不多,这里记录一下shell终端下直接对db的基本操作!
撰写不易,转载请注明出处:http://blog.csdn.net/jscese/article/details/40016701
一.概念:
sqlite3 为android所使用的轻量级数据库,小巧方便,用于管理android系统中的各种db文件,在ubuntu中能够安装sqliteman 来查看android系统中的db文件,Framework中的接口位置:/frameworks/base/core/java/android/database/sqlite/SQLiteDatabase.java
二.shell使用:
我使用的是ubuntu的minicom下的shell终端。以系统setting的database为例,文件夹为:/data/data/com.android.providers.settings/databases/setting.db
cd 到databases文件夹下。打开数据库文件:sqlite3 setting.db
- SQLite version 3.7.11 2012-03-20 11:35:50
- Enter ".help" for instructions
- Enter SQL statements terminated with a ";"
- sqlite>
能够看到SQL版本号,以及简单提示,使用SQL语句时须要以 “;” 分号结尾!
sqlite3 *.db 打开数据库,假设存在就打开操作,假设不存在就创建,改动之后可以保存创建。
使用.help 查看帮助:
- .backup ?DB? FILE Backup DB (default "main") to FILE
- .bail ON|OFF Stop after hitting an error. Default OFF
- .databases List names and files of attached databases
- .dump ?TABLE?
- ... Dump the database in an SQL text format
- If TABLE specified, only dump tables matching
- LIKE pattern TABLE.
- .echo ON|OFF Turn command echo on or off
- .exit Exit this program
- .explain ?ON|OFF?
- Turn output mode suitable for EXPLAIN on or off.
- With no args, it turns EXPLAIN on.
- .header(s) ON|OFF Turn display of headers on or off
- .help Show this message
- .import FILE TABLE Import data from FILE into TABLE
- .indices ?TABLE?
- Show names of all indices
- If TABLE specified, only show indices for tables
- matching LIKE pattern TABLE.
- .log FILE|off Turn logging on or off. FILE can be stderr/stdout
- .mode MODE ?TABLE? Set output mode where MODE is one of:
- csv Comma-separated values
- column Left-aligned columns. (See .width)
- html HTML <table> code
- insert SQL insert statements for TABLE
- line One value per line
- list Values delimited by .separator string
- tabs Tab-separated values
- tcl TCL list elements
- .nullvalue STRING Print STRING in place of NULL values
- .output FILENAME Send output to FILENAME
- .output stdout Send output to the screen
- .prompt MAIN CONTINUE Replace the standard prompts
- .quit Exit this program
- .read FILENAME Execute SQL in FILENAME
- .restore ?DB? FILE Restore content of DB (default "main") from FILE
- .schema ?TABLE? Show the CREATE statements
- If TABLE specified, only show tables matching
- LIKE pattern TABLE.
- .separator STRING Change separator used by output mode and .import
- .show Show the current values for various settings
- .stats ON|OFF Turn stats on or off
- .tables ?TABLE? List names of tables
- If TABLE specified, only list tables matching
- LIKE pattern TABLE.
- .timeout MS Try opening locked tables for MS milliseconds
- .vfsname ?AUX? Print the name of the VFS stack
- .width NUM1 NUM2 ... Set column widths for "column" mode
- .timer ON|OFF Turn the CPU timer measurement on or off
- sqlite> .help
- .backup ?DB? FILE Backup DB (default "main") to FILE
- .bail ON|OFF Stop after hitting an error. Default OFF
- .databases List names and files of attached databases
- sqlite>
- sqlite>
- sqlite> .help
- .backup ?DB?
- FILE Backup DB (default "main") to FILE
- .bail ON|OFF Stop after hitting an error. Default OFF
- .databases List names and files of attached databases
- .dump ?TABLE?
- ... Dump the database in an SQL text format
- If TABLE specified, only dump tables matching
- LIKE pattern TABLE.
- .echo ON|OFF Turn command echo on or off
- .exit Exit this program
- .explain ?
- ON|OFF? Turn output mode suitable for EXPLAIN on or off.
- With no args, it turns EXPLAIN on.
- .header(s) ON|OFF Turn display of headers on or off
- .help Show this message
- .import FILE TABLE Import data from FILE into TABLE
- .indices ?TABLE? Show names of all indices
- If TABLE specified, only show indices for tables
- matching LIKE pattern TABLE.
- .log FILE|off Turn logging on or off. FILE can be stderr/stdout
- .mode MODE ?TABLE? Set output mode where MODE is one of:
- csv Comma-separated values
- column Left-aligned columns. (See .width)
- html HTML <table> code
- insert SQL insert statements for TABLE
- line One value per line
- list Values delimited by .separator string
- tabs Tab-separated values
- tcl TCL list elements
- .nullvalue STRING Print STRING in place of NULL values
- .output FILENAME Send output to FILENAME
- .output stdout Send output to the screen
- .prompt MAIN CONTINUE Replace the standard prompts
- .quit Exit this program
- .read FILENAME Execute SQL in FILENAME
- .restore ?DB? FILE Restore content of DB (default "main") from FILE
- .schema ?
- TABLE? Show the CREATE statements
- If TABLE specified, only show tables matching
- LIKE pattern TABLE.
- .separator STRING Change separator used by output mode and .import
- .show Show the current values for various settings
- .stats ON|OFF Turn stats on or off
- .tables ?
- TABLE? List names of tables
- If TABLE specified, only list tables matching
- LIKE pattern TABLE.
- .timeout MS Try opening locked tables for MS milliseconds
- .vfsname ?AUX? Print the name of the VFS stack
- .width NUM1 NUM2 ... Set column widths for "column" mode
- .timer ON|OFF Turn the CPU timer measurement on or off
能够看到所支持的命令,当中经常使用的:
.database 显示数据库信息;包括当前数据库的位置
.tables 或者 .table 显示表名称 没有表则不显示
.schema 命令能够查看创建数据对象时的SQL命令;
.mode csv|column|insert|line|list|tabs|tcl 改变输出格式
默认情况,使用 select * from system 查看system表的所有数据:
- sqlite> select * from system;
- 1|volume_music|15
- 2|volume_ring|5
- 3|volume_system|7
- 4|volume_voice|4
- 5|volume_alarm|6
- 6|volume_notification|5
- 7|volume_bluetooth_sco|7
- ...
能够看到是列表的形式显示出来的,并且ID name value 都是以 “ | ” 分隔开来,切割符号由 .separator "X" 来定义。X即为切割符!
使用 .mode culumn 之后:
- sqlite> .mode column
- sqlite> select * from system;
- 1 volume_music 15
- 2 volume_ring 5
- 3 volume_syste 7
- 4 volume_voice 4
- 5 volume_alarm 6
- 6 volume_notif 5
- 7 volume_bluet 7
其他类似,都仅仅是为了 改变输出的格式而已。
1.创建指令:
- sqlite> .schema system
- CREATE TABLE system (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT UNIQUE ON CONFLICT REPLACE,value TEXT);
- CREATE INDEX systemIndex1 ON system (name);
创建的时候指定參数和属性,这里有三个,而且自增,关于数据类型:
NULL: 这个值为空值
INTEGER: 值被标识为整数,根据值的大小能够依次被存储为1,2,3,4,5,6,7,8个字节
REAL: 全部值都是浮动的数值,被存储为8字节的IEEE浮动标记序号.
TEXT: 文本. 值为文本字符串,使用数据库编码存储(TUTF-8, UTF-16BE or UTF-16-LE).
BLOB: 值是BLOB数据,怎样输入就怎样存储,不改变格式.
2.插入数据:
- sqlite> .mode insert
- sqlite> select * from system;
- INSERT INTO table VALUES(1,'volume_music','15');
- INSERT INTO table VALUES(2,'volume_ring','5');
- INSERT INTO table VALUES(3,'volume_system','7');
- INSERT INTO table VALUES(4,'volume_voice','4');
- INSERT INTO table VALUES(5,'volume_alarm','6');
- INSERT INTO table VALUES(6,'volume_notification','5');
- INSERT INTO table VALUES(7,'volume_bluetooth_sco','7');
如我要在system表里面插入一条数据:
- insert into system values('45','sqlite','jscese');
这里插入数据要跟创建的时候数量要相应,不然会报:
Error: table table_name has * columns but * values were supplied
3.查询指定数据:
- sqlite> select * from system where name='sqlite';
- INSERT INTO table VALUES(45,'sqlite','jscese');
依据表类型值来筛选查询,这里表的属性有 _id ,name,value ,可在创建命令中看到!
4.删除数据:
- delete from system where value='jscese';
删除整个表:drop table table_name
5.更新表数据:
- 45|sqlite|jscese
- sqlite> update system set name='sqlite3' where value='jscese';
- sqlite> select * from system where value='jscese';
- 45|sqlite3|jscese
6.操作问题:
在使用SQL指令之后没有加 分号就 enter,会进入输入模式,这个时候再补上 一个 。 分号就可以:
- sqlite> select * from system
- ...> ;
我直接在minicom下使用 sqlite 无法识别 上下左右方向键,以及 回退键!
出现 ^[[A ^H 这种乱码。
网上别人给出的。我没试过~http://ljhzzyx.blog.163.com/blog/static/3838031220102595026789/
本机终端adb shell 是能够识别 回退键的
一般退出sqlite3 使用 .quit
实在退不出 ...> 模式 就使用 ctrl+D 强退!
Android——sqlite3 基本命令操作的更多相关文章
- android sqlite3:数据库操作
1. 修改表名: alter table notification rename to notification_test 2. 修改数据库名称: 3. 复制一个表的数据到另外一个表中(表的字段一致) ...
- Android开发之使用sqlite3工具操作数据库的两种方式
使用 sqlite3 工具操作数据库的两种方式 请尊重他人的劳动成果,转载请注明出处:Android开发之使用sqlite3工具操作数据库的两种方式 http://blog.csdn.net/feng ...
- SQLite3命令操作大全
SQLite3命令操作大全 SQLite库包含一个名字叫做sqlite3的命令行,它可以让用户手工输入并执行面向SQLite数据库的SQL命令.本文档提供一个样使用sqlite3的简要说明. 一.ql ...
- Linux sqlite3基本命令
简介sqlite3一款主要用于嵌入式的轻量级数据库,本文旨在为熟悉sqlite3基本命令提供技术文档. 备注:本文所有操作均在root用户下进行. 1.安装sqlite3 ubuntu下安装sqlit ...
- [转]Android - 文件读写操作 总结
转自:http://blog.csdn.net/ztp800201/article/details/7322110 Android - 文件读写操作 总结 分类: Android2012-03-05 ...
- android管理联系人操作
ContentProvider扩展之管理系统联系人 我们都知道ContentProvider是用来共享数据的,然而android本身就提供了大量的ContentProvider,例如联系人信息,系统的 ...
- 【转】Android 使用ORMLite 操作数据库
Android 使用ORMLite 操作数据库 用过ssh,s2sh的肯定不会陌生 ,应该一学就会 第一步: 下载ormlite-android-4.41.jar和ormlite-core-4.4 ...
- linux云计算集群架构学习笔记:rhel7基本命令操作
1-3-RHEL7基本命令操作 1.1Linux终端介绍 Shell提示符 Bash Shell基本语法. 1.2基本命令的使用:ls.pwd.cd. 1.3查看系统和BIOS硬件时间. 1.4 L ...
- Linux高级运维 第三章 Linux基本命令操作
3.1 Linux终端介绍.Shell提示符.Bash基本语法 3.1.1 登录LINUX终端 两种终端仿真器:1.GNOME桌面的GHOME Terminal : 2.KDE桌面的Konsole ...
随机推荐
- Maven学习总结(三):修改从Maven中心仓库下载到本地的jar包的默认存储位置
一:修改从Maven中心仓库下载到本地的jar包的默认存储位置 从Maven中心仓库下载到本地的jar包的默认存放在”${user.home}/.m2/repository”中,${user.home ...
- Android之NDK环境配置+JNI开发+so文件编译
前言 这边Android作为日常记录,虽然破坏了文章队形~ 最近人工智能挺火的,也稍微了解了一些库,比如关于视觉库openCV.要在安卓下调用这些C/C++库,需要用到JNI开发,在此把过程分享一 ...
- C# 后台解析json,简单方法 字符串序列化为对象,取值
如果后台是一个JSON的字符串格式如下: string str = "{\"Success\":true,\"Msg\":\"成功!\&qu ...
- 微服务架构之spring cloud turbine
在前面介绍了spring cloud hystrix及其hystrix dashboard,但都是对单个项目的监控,对于一个为项目而言,必定有很多微服务,一个一个去看非常的不方便,如果有一个能集中熔断 ...
- Django最佳实践(中文版)
这是一份关于开发和部署 Django Web 框架 的动态文档 (会随时更新). 这些准则不应该被认为是 绝对正确 或 唯一 使用 Django 的方法, 应该说这些最佳实践是我们使用框架多年来积累的 ...
- Linux / mysql: is it safe to copy mysql db files with cp command from one db to another?
Copying is very simple for MyISAM and completely 100% risky (near suicidal) with InnoDB. From your q ...
- VUE知识day3_vue插件总结
- hive 历史拉链表的处理
1. CREATE TABLE lalian_test(id int,col1 string,col2 string,dt string)--测试表COMMENT 'this is a test2' ...
- laravel model relationship
laravel支持多种模型之间的relation,对应着模型间的one2one, one2many,many2many,hasManyThrough,Polymorphic, many2many po ...
- Scratch3.0——克隆代码仓库的正确姿势
原文地址:https://blog.csdn.net/weiwoyonzhe/article/details/86603450 对Scratch3.0进行二次开发,首先要在github上fock官方代 ...