设为首页 加入收藏

TOP

SQLite应用详解(一)
2015-07-24 10:15:57 来源: 作者: 【 】 浏览:7
Tags:SQLite 应用 详解

SQLite是D.Richard Hipp用C语言编写的开源嵌入式引擎,它可以在所有主要的操作系统上运行。值得一提的是,袖珍型的SQLite竟然可以支持高达2TB大小的数据库,每个数据库都是以单个文件的形式存在,这些数据都是以B-Tree的数据结构形式存储在磁盘上。在事务处理方面,SQLite通过数据库级上的独立性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库中读取数据,但只有一个可以写入数据,而在某个进程或线程想数据库执行写操作之前,必须获得独占锁; 在数据类型方面,SQLite采用动态数据类型,当某个值插入到数据库时,SQLite将会检查它的类型,如果该类型与关联的列不匹配,SQLite则会尝试将该值类型转换成该列的类型,如果不能转换,则该值将作为本身的类型存储,SQLite称之为“弱类型”。但有个特例:如果是Integer primary key,则其他类型不会被转换,会报"datatype missmatch"错误。概括来说,SQLite支持NULL、INTEGER、REAL、TEXT及BOLB数据类型,分别代表空值、整型、浮点型、字符串文本、二进制对象。下面将从SQLite命令行操作、在Java中使用SQLite、在Android中使用SQLite等这几个方面带大家来掌握和深入理解SQLite数据库。

SQLite命令行操作

在操作之前,大家要先下载SQLite数据库,官方的下载页面是http://sqlite.org/download.html,如果你是windows系统,那个大家可以下载这两个文件

\

下载完成后分别解压,得到两个可执行文件,如下:

\

这两个文件可以根据自己的喜欢放置在指定位置,我把它放在了F盘根目录下,下面我们来一步步熟悉一下SQlite的命令行操作:

1)建库

C:\Users\Administrator>f:
F:\>sqlite3 test.db
SQLite version 3.8.10.1 2015-05-09 12:14:55
Enter ".help" for usage hints.
sqlite> .databases
seq name file
--- --------------- ----------------------------------------------------------
0 main F:\test.db

这里我们执行了sqlite3命令,参数就是数据库的名字,如果该数据库已存在则使用,反之创建一个。当然你也可以在别的目录(可写)下创建数据库,如:F:\>sqlite3 e:\test.db。如果大家想了解一下SQLite的其他命令,可以执行".help"命令列出所有命令清单进行查看。

2)建表

sqlite> create table student(id integer primary key autoincrement, name varchar(15), age smallint);
sqlite> .tables
student

3)查看建表语句

sqlite> .schema student
CREATE TABLE student(id integer primary key autoincrement, name varchar(15), age smallint);

4)插入数据

sqlite> insert into student values(NULL,'zhangsan',24);
sqlite> select * from student;
1|zhangsan|24

5)分析数据库使用状态(使用刚下载的sqlite3_analyzer.exe工具)

--先退出sqlite3,可使用.quit或.exit

sqlite> .quit
F:\>sqlite3_analyzer test.db
/** Disk-Space Utilization Report For test.db

Page size in bytes................................ 1024
Pages in the whole file (measured)................ 3
Pages in the whole file (calculated).............. 3
Pages that store data............................. 3 100.0%
Pages on the freelist (per header)................ 0 0.0%
Pages on the freelist (calculated)................ 0 0.0%
Pages of auto-vacuum overhead..................... 0 0.0%
Number of tables in the database.................. 3
Number of indices................................. 0
Number of defined indices......................... 0
Number of implied indices......................... 0
Size of the file in bytes......................... 3072
Bytes of user payload stored...................... 23 0.75%

....

INSERT INTO space_used VALUES('sqlite_master','sqlite_master',0,2,2,197,0,0,117,0,1,0,0,711,0,0,1024
);
INSERT INTO space_used VALUES('student','student',0,1,1,13,0,0,13,0,1,0,0,999,0,0,1024);
INSERT INTO space_used VALUES('sqlite_sequence','sqlite_sequence',0,1,1,10,0,0,10,0,1,0,0,1002,0,0,1
024);
COMMIT;

6)备份数据——导出

我们可以指定输出的目标为一个sql文件,然后再使用.dump命令时,输出信息就会写入指定的文件:

F:\>sqlite3 test.db
SQLite version 3.8.10.1 2015-05-09 12:14:55
Enter ".help" for usage hints.
sqlite> .output stu_bk.sql
sqlite> .dump

可以看到,F盘中已经创建了一个名为stu_bk的sql文件:

\

stu_bk.sql文件的内容为:

\

如果想恢复标准输出,可以这样设定:

sqlite> .output stdout
sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE student(id integer primary key a
首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇润乾集算报表用脚本实现动态SQL传.. 下一篇SqlServerINSTEADOFUPDATE视图触..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·如何从内核协议栈到 (2025-12-27 03:19:09)
·什么是网络协议?有哪 (2025-12-27 03:19:06)
·TCP/ IP协议有哪些 (2025-12-27 03:19:03)
·怎样用 Python 写一 (2025-12-27 02:49:19)
·如何学习python数据 (2025-12-27 02:49:16)