SQLITE3嵌入式数据库简单介绍
(2011-03-18 16:22:53)
标签:
sqlite3嵌入式数据库it |
分类: 程序开发与测试 |
SQLite是一个非常轻量级自包含(lightweight and self-contained)的DBMS,它可移植性好,很容易使用,很小,高效而且可靠。SQLite嵌入到使用它的应用程序中,它们共用相同的进程空间,而不是单独的一个进程。从外部看,它并不像一个RDBMS,但在进程内部,它却是完整的,自包含的数据库引擎。
嵌入式数据库的一大好处就是在你的程序内部不需要网络配置,也不需要管理。因为客户端和服务器在同一进程空间运行。SQLite 的数据库权限只依赖于文件系统,没有用户帐户的概念。SQLite 有数据库级锁定,没有网络服务器。它需要的内存,其它开销很小,适合用于嵌入式设备。你需要做的仅仅是把它正确的编译到你的程序。
SQLite使用起来非常方便,仅仅需要敲入带有SQLite数据库名字的"sqlite3"命令即可。如果文件不存在,则创建一个新的(数据库)文件。然后sqlite3程序将提示你输入SQL。敲入SQL语句(以分号“;”结束),敲回车键之后,SQL语句就会执行。例如,创建一个包含一个表"tb11"名字为"ex1"的SQLite数据库,你可以这样做:
$sqlite3 ex1
SQLite version 3.3.17
Enter ".help" for instructions
sqlite>
sqlite>
sqlite>
sqlite>
hello!|10
goodbye|20
其操作和普通的关系数据库没有太大的差异,可以很方便的对数据进行增、删、改、查。SQLite可以使用8种方式显示查询结果,大大方便了程序对数据的处理,sqlite3程序可以以八种不同的格式显示一个查询的结果:"csv", "列", "html", "插入", "行", "制表"和"tcl"。你可以用".mode"点命令在这些输出格式之间切换。并且可以使用.output将结果直接输出到文件。以列模式为例:
在列模式下,每条记录在一个单独的行中以数据列对齐的方式显示。列如:
sqlite>
sqlite>
one
----------
hello
goodbye
SQLite支持很多程序开发语言,例如C#、PHP、Java、C/C++等,且提供了丰富的API使用起来十分方便简单,以C为例:
使用 sqlite 的 C/C++ 接口.
这个函数调用sqlite3_open() 打开数据库, sqlite3_get_table 执行 SQL 命令,
并且sqlite3_close() 关闭数据库连接。
代码:
#include <stdio.h>
#include <sqlite3.h>
int main( void )
{
}
SQLite和其他关系数据库一样,也支持事务,而且对事务的使用非常简单:使用sql语句”begin;”表示事务开始,”rollback;”表示事务的回滚,“commit;”表示事务的提交。下面我们对上面例子中的代码作一下修改,给Insert操作添加事务支持:
bool is_succed = true;
sqlite3_exec(conn, "begin;", 0, 0, 0);// 开启事务
//添加10条记录
for (int i = 0; i < 10; i++)
{
// 执行SQL
sprintf(sql, "INSERT INTO [test_for_cpp] ([id], [name], [age]) \
VALUES (%d, '%s', %d)", i, "JGood", i);
if (SQLITE_OK != sqlite3_exec(conn, sql, 0, 0, &err_msg))
{
is_succed = false;
break;
}
}
if (is_succed)
sqlite3_exec(conn, "commit;", 0, 0, 0);// 提交事务
else
sqlite3_exec(conn, "rollback;", 0, 0, 0);// 回滚事务
综上所述,SQLite是一个小巧方便且功能强大的嵌入式数据库,它实现了多数的SQL-92标准,包括数据库事务(Transaction),触发器(Trigger)和多数的复杂查询。它可以同时被多个进程或者线程访问,读访问可以并行进行,写访问只能单独进行。SQLite可以被为数众多的编程语言绑定使用并且支持多个系统平台,SQLite的官方网站称,SQLite是目前使用最广泛的数据库系统,SQLite有1.25亿份随Firefox发放、2千万份随Mac机发放、2千万随内建SQLite的PHP发放、3亿份随Skype发放、1千万份随AOL邮件客户端发放、2千万份随Symbian发放、1千万份随Solaris 10发放、还有数百万份的SQLite随McAfee、iPhones和众多手机厂商发放。由此看来SQLite在已经被广泛的应用。