SQLite3可以让我们手动的对SQLite数据库进行管理。一共有2个sqlite3,一个在电脑上,它位于 android-sdk-windows\tools\sqlite3.exe,用于电脑上SQLite数据库进行管理;还有一个位于Android系统上(手机上),它用于位于Android系统上的SQLite数据库进行管理,对于后者你需要通过adb shell进入shell。有时我们不想直接在Android系统上对SQLite数据库进行操作,这时可以把它拷贝到电脑上进行操作。

但是需要注意前者是Windows系统,后者是Linux系统,他们表示路径的方式不一样。

在SQLite3命令后可跟一个参数指定要打开或创建的数据库文件。如果指定的数据库文件还不存在,就会新建一个数据库,且以该参数作为文件名。对于Android系统上的SQLite3,必须通过其shell来运行,如果新建数据库的话,需要root权限,可以在shell中键入"su"来获得root权限。

如果是Android系统的sqlite3程序(通过shell运行),你可以Ctrl键+D ,然后回车退出该程序回到shell,也可以Ctrl键+C直接退出Shell,如果是电脑上的SQLite3,可以Ctrl键+C直接退出SQLite3程序。

下面就是一个创建包含一个名叫"tbl1"的表的名叫"ex1"的SQLite数据库的示例。

示例1:

java代码:

$ sqlite3 ex1

SQLite version 3.3.10

Enter ".help"forinstructions

sqlite> createtabletbl1(onevarchar(10), twosmallint);

sqlite> insertintotbl1values('hello!',10);

sqlite> insertintotbl1values('goodbye', 20);

sqlite> select*fromtbl1;

hello!|10

goodbye|20

sqlite>

SQLite3支持两种命令,一种是SQL命令,一种是非SQL命令,非SQL命令以"."作为前缀,比如".tables"命令。

可以通过".help"命令来查看它所有的非SQL命令.所有不以"."为前缀的语句,都将做SQL进行解释,当时对于SQL语句你需要在末尾加上分号";"以表示SQL语句输入完成,这时你输入的命令才开始按照SQL语言进行执行。

示例2:

java代码:

sqlite>CREATETABLEtbl2 (

...> f1 varchar(30)primarykey,

...> f2 text,

...> f3 real

...> );

sqlite>

关于数据库的schema是存放在一个叫sqlite_master的表中,你虽然不能对它进行DROP TABLE, UPDATE, INSERT or DELETE操作,但是可以像普通的表一样对它进行查询。

示例3:

java代码:

sqlite3 /data/data/com.android.providers.settings/databases/settings.db

SQLite version 3.6.22

Enter ".help"forinstructions

Enter SQL statements terminated witha";"

sqlite> .tables

.tables

android_metadata bookmarks system

bluetooth_devices secure

sqlite> select*fromsqlite_master;

select*fromsqlite_master;

table|android_metadata|android_metadata|3|CREATETABLEandroid_metadata (locale TEXT)

table|system|system|4|CREATETABLEsystem (_idINTEGERPRIMARYKEYAUTOINCREMENT,nameTEXTUNIQUEONCONFLICTREPLACE,value TEXT)

index|sqlite_autoindex_system_1|system|5|

table|sqlite_sequence|sqlite_sequence|6|CREATETABLEsqlite_sequence(name,seq)

index|systemIndex1|system|7|CREATEINDEXsystemIndex1ONsystem (name)

table|secure|secure|8|CREATETABLEsecure (_idINTEGERPRIMARYKEYAUTOINCREMENT,nameTEXTUNIQUEONCONFLICTREPLACE,value TEXT)

index|sqlite_autoindex_secure_1|secure|9|

index|secureIndex1|secure|10|CREATEINDEXsecureIndex1ONsecure (name)

table|bluetooth_devices|bluetooth_devices|11|CREATETABLEbluetooth_devices (_idINTEGERPRIMARYKEY,nameTEXT,addr TEXT,channelINTEGER,typeINTEGER)

table|bookmarks|bookmarks|12|CREATETABLEbookmarks (_idINTEGERPRIMARYKEY,tit

le TEXT,folder TEXT,intent TEXT,shortcut INTEGER,orderingINTEGER)

index|bookmarksIndex1|bookmarks|13|CREATEINDEXbookmarksIndex1ONbookmarks (folder)

index|bookmarksIndex2|bookmarks|14|CREATEINDEXbookmarksIndex2ONbookmarks (shortcut)

sqlite>

在sqlite3中我们可以通过".help"命令来查所有的非SQL命令。

sqlite3 8种不同的方式显示查询返回的结果:"csv", "column", "html", "insert", "line", "list","tabs", "tcl".

你可以通过.mode来设置显示的方式。默认的是"list"方式,这时返回结果的一条记录显示一行,每列的内容之间用设定的分隔符隔开,

默认的分隔符是"|".

示例5:

java代码:

sqlite> .mode list

sqlite> select*fromtbl1;

hello|10

goodbye|20

sqlite>

你可以通过".separator"来设置"list"模式下的分隔符。比如我们想把", "作为分隔符,可以这样:

示例6:

java代码:

sqlite> .separator", "

sqlite> select*fromtbl1;

hello, 10

goodbye, 20

sqlite>

"line"模式下, 每行只显示数据库的一行的一列。每行由列名,等号和列的值组成。每条记录之间由一个空行隔开。

示例7

java代码:

sqlite> .mode line

sqlite> select*fromtbl1;

one = hello

two = 10

one = goodbye

two = 20

sqlite>

"column"模式下,每条记录都在单独一行显示。***行显示的是列名,第二行只是用于分割列名和记录的数据,第三行开始才是记录的内容。

示例8:

java代码:

sqlite> .mode columnsqlite>select*fromtbl1;

one two

---------- ----------

hello 10

goodbye 20

sqlite>

默认情况下,每列的宽度最多只能显示10个字符。所以如果数据包含的字符如果他太多,可能就显示不完。

但是我们可以通过".width"设置每列的宽度。

示例9:

java代码:

sqlite> .width 12 6

sqlite> select*fromtbl1;

one two

------------ ------

hello 10

goodbye 20

sqlite>

示例9就把第1列和第二列的宽度分别设置为了12和6个字符,其他列的宽度并没改变。

如果你把列宽设置为0,那么调整为以下三个的***值:10,该列的列名字符数,***行记录该列的字符数。这样列的宽度就可以自动调整。

默认的列宽就是0,以便它可以自动调整。

可以通过".header"命令可以设置是否显示头(头包括***行,列名,第二行,分隔行)。

示例10:

java代码:

sqlite> .headeroff

sqlite> select*fromtbl1;

hello 10

goodbye 20

sqlite>

"insert"模式下,返回的查询结果将以SQL的INSERT语句形式进行显示。

示例11:

java代码:

sqlite> .modeinsertnew_table

sqlite> select*fromtbl1;

INSERTINTO'new_table'VALUES('hello',10);

INSERTINTO'new_table'VALUES('goodbye',20);

sqlite>

"html"模式下,查询返回结果将以XHTML table的形式进行显示,它并不以

作为结尾。 但是每条记录以作为开始,作为结束,记录的数据以作为开始,以作为结束

示例12:

java代码:

sqlite>select*fromsystem;

select*fromsystem;

1volume_music74volume_voice4

sqlite>

".output"命令可以把查询返回结果的输出定向到文件上。该命令的***个参数即是要定向的位置。在把输出定向了文件后,可以通过".output stdout"把输出重新定向到标准输出上。

示例13:

java代码:

sqlite> .mode list

sqlite> .separator |

sqlite> .outputtest_file_1.txt

sqlite> select*fromtbl1;

sqlite> .exit

$ cat test_file_1.txt

hello|10

goodbye|20

$

sqlite3提供了多个命令来查看数据库的schema".tables"命令可以查看当前数据库所有的表

示例14:

java代码:

sqlite> .tables

tbl1

tbl2

sqlite>

".tables"和在list模式下执行下面的语句相似:

SELECT name FROM sqlite_master WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%' UNION ALL SELECT name FROM sqlite_temp_master WHERE type IN ('table','view') ORDER BY 1

实际上, 如果你查看sqlite3程序的源码 (found in the source tree in the file src/shell.c), you'll find exactly the above query.

另外,".tables"命令后也可以跟一参数,它是一个pattern,这样命令就只列出表名和该参数匹配的表。

示例14-1:

java代码:

sqlite> .tables

.tables

android_metadata bookmarks system

bluetooth_devices secure

sqlite> .tables s%

.tables s%

secure sqlite_sequence system

sqlite>

".indices"命令列出指定表的所有indices(索引)。***个参数为表的名字。

示例15:

java代码:

sqlite> .schemasystem

.schemasystem

CREATETABLEsystem (_idINTEGERPRIMARYKEYAUTOINCREMENT,nameTEXTUNIQUEONC

ONFLICT REPLACE,value TEXT);

CREATEINDEXsystemIndex1ONsystem (name);

sqlite> .tables

.tables

android_metadata bookmarks system

bluetooth_devices secure

sqlite> .indices system

.indices system

sqlite_autoindex_system_1

systemIndex1

sqlite>

".schema"命令,在没有参数的情况,它会显示最初用于创建数据库的CREATE TABLE和CREATE INDEX的SQL语句。比如,示例16

".schema"命令可以包含一个参数,它是一个pattern,用于对表进行过滤,这时只会显示满足条件的表和所有索引的SQL语句。

比如,示例15和示例17.

示例16:

java代码:

sqlite> .schema

.schema

CREATETABLEandroid_metadata (locale TEXT);

CREATETABLEbluetooth_devices (_idINTEGERPRIMARYKEY,nameTEXT,addr TEXT,chan

nel INTEGER,typeINTEGER);

CREATETABLEbookmarks (_idINTEGERPRIMARYKEY,title TEXT,folder TEXT,intent TE

XT,shortcut INTEGER,orderingINTEGER);

CREATETABLEsecure (_idINTEGERPRIMARYKEYAUTOINCREMENT,nameTEXTUNIQUEONC

ONFLICT REPLACE,value TEXT);

CREATETABLEsystem (_idINTEGERPRIMARYKEYAUTOINCREMENT,nameTEXTUNIQUEONC

ONFLICT REPLACE,value TEXT);

CREATEINDEXbookmarksIndex1ONbookmarks (folder);

CREATEINDEXbookmarksIndex2ONbookmarks (shortcut);

CREATEINDEXsecureIndex1ONsecure (name);

CREATEINDEXsystemIndex1ONsystem (name);

sqlite>

示例17:

java代码:

sqlite> .schemas%

.schemas%

CREATETABLEsecure (_idINTEGERPRIMARYKEYAUTOINCREMENT,nameTEXTUNIQUEONC

ONFLICT REPLACE,value TEXT);

CREATETABLEsqlite_sequence(name,seq);

CREATETABLEsystem (_idINTEGERPRIMARYKEYAUTOINCREMENT,nameTEXTUNIQUEONC

ONFLICT REPLACE,value TEXT);

CREATEINDEXsecureIndex1ONsecure (name);

CREATEINDEXsystemIndex1ONsystem (name);

sqlite>

【责任编辑:立方 TEL:(010)68476606】

点赞 0

android sqlite 参数,Android SQLite3命令详解教程相关推荐

  1. redis的lrange_Redis LRANGE 命令-Redis LRANGE命令详解教程-Redis LRANGE使用案例-嗨客网

    Redis LRANGE命令教程 下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推. 也可以使用负数下标,以 -1 表 ...

  2. android 数据库表格数据库数据库中,Android SQLite数据库中的表详解

    Android SQLite数据库 前言 以前写PHP的时候,内置了print_r()和var_dump()两个函数用于打印输出任意类型的数据内部结构,现在做Android的开发,发现并没有这种类似的 ...

  3. sqlite3命令详解

    http://www.2cto.com/database/201112/113683.html sqlite3可以让我们手动的对SQLite数据库进行管理.一共有2个sqlite3,一个在电脑上,它位 ...

  4. exp参数feedback_exp/imp命令详解

    ORACLE EXP/IMP的使用详解 作者:eclipse 导入/导出是ORACLE幸存的最古老的两个命令行工具,其实我 从来不认为Exp/Imp是一种好的备份方式,正确的说法是Exp/Imp只能是 ...

  5. 三星android获取root权限,三星G9250(S6 Edge公开版全网通 Android 5.1)获取ROOT权限详解教程...

    伴随着安卓刷机越来越流行,很多安卓用户都喜欢上了这种可以自定个性系统的行为,那么三星G9250(S6 Edge公开版全网通 Android 5.1)怎么获取ROOT权限?三星G9250(S6 Edge ...

  6. linux perf 参数,Linux perf命令详解及常用参数解析

    perf是Linux下的一款性能分析工具,能够进行函数级与指令级的热点查找. Perf List 利用perf剖析程序性能时,需要指定当前测试的性能时间.性能事件是指在处理器或操作系统中发生的,可能影 ...

  7. Linux常用命令详解教程大全,Linux教程手册详解常用命令

    一.基本命令 1.1 关机和重启 关机     shutdown -h now        立刻关机     shutdown -h 5        5分钟后关机     poweroff     ...

  8. linux查看和结束进程,Linux查看和结束进程命令详解

    在ubuntu中,终止一个进程或终止一个正在运行的程序,一般是通过 kill .killall.pkill.xkill 等进行. ----------------------------------- ...

  9. linux who命令详解,Linux who命令详解

    Linux who命令详解教程 Linux who命令详解 功能 显示系统中哪些使用者. 语法 who [options] 参数 参数 描述 options who 命令使用的参数. who命令常用参 ...

最新文章

  1. NO7 利用三剑客awk-grep-sed-head-tail等7种方法实践
  2. iOS 11开发教程(二十二)iOS11应用视图实现按钮的响应(2)
  3. CentOS6.5菜鸟之旅:安装VirtualBox4.3
  4. MySQL多表查询核心优化
  5. ip addr 相关操作
  6. 【知识小课堂】 mongodb 之 objectId
  7. 苹果电脑显示500服务器错误,VS For Mac 运行项目出现 HTTP 500错误
  8. C++自定义自适应中值滤波
  9. 解决:Docker 启动的容器内部时间比服务器时间晚 8 小时,容器内部时间与宿主机时间不一致
  10. 微博热点事件背后数据库运维的“功守道”
  11. 《图解HTTP》-读
  12. 【less-24】基于SQLI的二次注入
  13. 航海王启航服务器维护要多久,《航海王启航》7月1日服务器更新维护公告
  14. .js文件中的下划线
  15. WIFI的传输距离介绍
  16. 一个简洁的背单词、背短语python程序——英文背记系统(自用)
  17. python实习生基础面试题_常见的Python基本面试问题,python,基础,面试题
  18. Redis第二讲【Redis基本命令和五大数据结构】
  19. 微信公众平台定制开发
  20. 虚拟机使用adb连接板子

热门文章

  1. CentOS 7最小化安装步骤
  2. 物联网的发展之—Vecloud微云
  3. gnome3增加自定义程序快捷方式
  4. Linux:网络基础配置
  5. 洛谷1527(bzoj2738)矩阵乘法——二维树状数组+整体二分
  6. [PHP]Maximum execution time of 30 seconds exceeded
  7. 视图控制器及屏幕旋转
  8. 搭完环境,最后登录时提示“与数据库连接失败,请与管理员联系”
  9. zoj 1438 - Asteroids!
  10. 【ZZ】IPv4与IPv6