[项目总结]Sqlite的那些事

/ 0评 / 0

前言

Android中自带的数据库为Sqlite,与上篇博客类似,属于冷门知识点,往往都是写完DB模块,下一次再接触就不知猴年马月了,所以这里记录下一些常用操作。

查看数据库

Android数据库保存位置为:/data/data/package-name/databases/下面。

进入Sqlite命令行模式

#sqlite3  database_name.db
>>

查看所有表

sqlite> .table

查看建表的SQL命令

sqlite> .schema 
####你也可以指定表名,不指明表名则显示所有的
sqlite> .schema table_name

显示表头

.headers on/off 显示表头 默认off

改变输出格式

.mode list|column|insert|line|tabs|tcl|csv   改变输出格式

sqlite> .mode list
sqlite> select * from emp;
7369|SMITH|CLERK|7902|17-12-1980|800||20
7499|ALLEN|SALESMAN|7698|20-02-1981|1600|300|30
如果字段值为NULL 默认不显示 也就是显示空字符串


sqlite> .mode column
sqlite> select * from emp;
7369        SMITH       CLERK       7902        17-12-1980  800                     20        
7499        ALLEN       SALESMAN    7698        20-02-1981  1600        300         30        
7521        WARD        SALESMAN    7698        22-02-1981  1250        500         30 


sqlite> .mode insert
sqlite> select * from dept;
INSERT INTO table VALUES(10,'ACCOUNTING','NEW YORK');
INSERT INTO table VALUES(20,'RESEARCH','DALLAS');
INSERT INTO table VALUES(30,'SALES','CHICAGO');
INSERT INTO table VALUES(40,'OPERATIONS','BOSTON');


sqlite> .mode line
sqlite> select * from dept;
DEPTNO = 10
 DNAME = ACCOUNTING
   LOC = NEW YORK


DEPTNO = 20
 DNAME = RESEARCH
   LOC = DALLAS


DEPTNO = 30
 DNAME = SALES
   LOC = CHICAGO


DEPTNO = 40
 DNAME = OPERATIONS
   LOC = BOSTON


sqlite> .mode tabs
sqlite> select * from dept;
10 ACCOUNTING  NEW YORK
20 RESEARCH  DALLAS
30 SALES  CHICAGO
40 OPERATIONS  BOSTON


sqlite> .mode tcl
sqlite> select * from dept;
"10" "ACCOUNTING""NEW YORK"
"20" "RESEARCH""DALLAS"
"30" "SALES"  "CHICAGO" 
"40" "OPERATIONS""BOSTON"


sqlite> .mode csv
sqlite> select * from dept;
10,ACCOUNTING,"NEW YORK"
20,RESEARCH,DALLAS
30,SALES,CHICAGO
40,OPERATIONS,BOSTON

退出Sqlite3命令行

sqlite> .exit

上面介绍的都是Sqlite3的默认命令,我们可以看到,这些命令都是以.开头的,我们也可以输入sql命令,不过需要使用;分号结尾。

Sqlite那些数据类型

NULL: 这个值为空值

INTEGER: 值被标识为整数,依据值的大小可以依次被存储为1,2,3,4,5,6,7,8个字节

REAL: 所有值都是浮动的数值,被存储为8字节的IEEE浮动标记序号.

TEXT: 文本. 值为文本字符串,使用数据库编码存储(TUTF-8, UTF-16BE or UTF-16-LE).

BLOB: 值是BLOB数据,如何输入就如何存储,不改变格式.

Sqlite建表小技巧

对于我们来说,使用sql命令一句句的建表肯定是不能忍受的,别和我说高手都是用命令行,那是没有图形界面可以用好不,不信你看看个人电脑上面装的linux谁没有一个图形界面?

首先下载一个Navicat for SQLite,然后新建数据库->新建表,建立完成以后点击下图中的SQL预览即可得到建表的SQL语句

两个超级常用的建表语句

某一个字段默认为当前时间

// 创建table  
@Override  
public void onCreate(SQLiteDatabase db) {  
	String sql = "CREATE TABLE " + TABLE_NAME + " (" + BOOK_ID  
			+ " INTEGER primary key autoincrement, " + BOOK_NAME  
			+ " text, " + BOOK_AUTHOR + " text, oderdate DATETIME DEFAULT CURRENT_TIMESTAMP  );";  
	db.execSQL(sql);  
}

某一个字段自增

CREATE TABLE TABLE_NAME ( _id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT);

参考链接:

http://blog.csdn.net/linchunhua/article/details/7184439

http://blog.csdn.net/barryhappy/article/details/7314119

http://blog.csdn.net/chaoyue0071/article/details/41823411

发表评论

您的电子邮箱地址不会被公开。