SQLite
作为一个开源的嵌入式数据库产品,具有系统开销小,检索效率高的特性,适用于手机、
PDA
、机顶盒设备等电器,并且作为嵌入式数据库在可下载的消费类应用程序中运行的很好。这篇文章介绍嵌入式数据库产品
SQLite
的技术特点,并着重讨论研究与
Java
语言之间的接口,并以实例说明如何使用
JAVA
开发基于
SQLite
的应用程序。
通常我们采用各种数据库产品来实现对数据的存储、检索等功能,例如,
Oracle
,
SQL Server
,
MySQL
等
等。这些产品除提供基本的查询,删除,添加等功能外,也提供了很多高级特性,如触发器,存储过程,数据备份恢复,全文检索功能等。但实际上,很多的应用,
仅仅利用到了这些数据库产品的基本特性而已。而且在一些小型应用上,或者某些特殊场合的应用,比如桌面程序,这些数据库产品就明显有一些臃肿。在这些情况
下,嵌入式数据库的优势就特别明显了。
嵌入式数据库无须独立运行的数据库引擎,它是由程序直接调用相应的
API
去实现对数据的存取操作。更直白的讲,嵌入式数据库是一种具备了基本数据库特性的数据文件。嵌入式数据库与其它数据库产品的区别是,前者是程序驱动式
,
而后者是引擎响应式。嵌入式数据库的一个很重要的特点是它们的体积非常小,编译后的产品也不过几十
K
。这不但对桌面程序的数据存储方案是一个很好的选择,也使得它们可以应用到一些移动设备上。同时,很多嵌入式数据库在性能上也优于其它数据库,所以在高性能的应用上也常见嵌入式数据库的身影。
下面介绍的是开放源代码的嵌入式数据库,
SQLite
。同时侧重研究如何应用
Java
连接
SQLite
数据库,并开发基于
SQLite
的应用程序。
SQLite
是
D ·
理查德
·
希普开发出来的用一个小型
C
库实现的一种强有力的嵌入式关系数据库管理体制。它提供了对
SQL92
的大多数支持
:
支持多表和索引、事务、视图、触发和一系列的用户接口及驱动
SQLite
实现了完备的、可嵌入的、零配置的
SQL
数据库引擎。它的特点包括:
1
、事务处理是原子的、一致的、独立的和持久的(
ACID
)
,
即使在系统崩溃和掉电以后。
2
、零配置,即不需要设置和管理。
3
、实现了绝大部分的
SQL92
标准。
4
、一个单独的磁盘文件存储一个完整的数据库。
5
、数据库文件在机器之间可自由共享。
6
、支持数据库文件大小至
2TB
。
7
、字符串和
BLOG
的大小只受限于可用存储器容量。
8
、代码量小,即小于
30K
的
C
代码行和小于
250K
的代码空间(
gcc
在
i486
上)
9
、对于绝大多数普通操作来说,比流行的
C/S
模式的数据库引擎运行速度快。
10
、
API
简单、易用。
可以看出,基于以上特点,
SQLite
非常适合应用于嵌入式移动数据库。
SQLite
的版权允许无任何限制的应用,包括商业性的产品。
SQLite
官方主站上可以下载到编译后的
SQLite
程序。
SQLite
是无数据类型的数据库。虽然在生成表结构的时候,要声明每个域的数据类型,但
SQLite
并不做任何检查。开发人员要靠自己的程序控制输入与读出数据的类型是正确的。这里有一个例外,就是当主键为整型值时,如果要插入一个非整型值时会产生异常。另外,虽然在插入或读出数据的时候是不区分类型的,但在比较的时候,不同数据类型是有区别的。比如:
CREATE TABLE MyTable(a INTEGER, b TEXT);
INSERT INTO MyTable VALUES(0,0);
当执行下面的查询:
SELECT count(*) FROM MyTable WHERE a=='00';
会返回一条记录,因为字段
a
的类型是整型,而数字
00
与
0
是相等的。而执行下面的查询则不会返
回记录:
SELECT count(*) FROM MyTable WHERE b=='00';
因为字段
b
是字符类型,字符
"00"
与
"0"
是不相等的。
SQLite
提供了对
Transaction
的支持。应用
Transaction
即保证了数据的完整性,也会提高运行速度,因为多条语句一起提交给数据库的速度会比一条一条的提交方式更快。
SQLite
库包括一个简单的命令行工具,该工具名称对应
SQLite-3_2_2
版本叫做
sqlite3,
用户使用这个工具可以对一个
SQLite
数据库手工输入和执行
SQL
命令。例如建立一个名叫
wgy
的
SQLite
数据库,并建立一个名叫
user
的表的步骤如下:
Sqlite3 wgy
SQLite version 3.2.1
Enter ".help" for instructions
sqlite> create table user(username varchar(10), password varchar(10));
sqlite> insert into user values('Marry', '111111');
sqlite> insert into tbl1 values('Helen', '222222');
sqlite> select * from user;
Marry|111111
Helen|222222
Sqlite>
用户结束操作只需按
CTRL+C
组合键。注意每条
SQL
命令后要加分号。
用户可能对命令行方式的操作感到不直观,不太容易使用。那么用户可以使用
SQLite Database Browser
软件,这是一个免费的、公用域的、开源的可视化工具,可以用来建立、编辑
SQLite
数据库文件。这就意味着用户可以不必学习复杂的
SQL
命令,而直接使用熟悉的可视化图形界面设计、编辑
SQLite
数据库。用户可从
http://sqlitebrowser.sourceforge.net/
下载该工具软件。
SQLite
源代码是
C
,而且官方网站上只提供了
C
和
Tcl
语言的接口。为了应用
Java
接口,要采用第三方的接口驱动程序,可在
http://www.ch-werner.de/javasqlite
中找到这个
Java
接口程序。这个接口提供了两种连接
SQLite
的方式:一是直接用
JNI
技术调用
SQLite
的
C
语言接口,这种方式要求开发人员要对
SQLite
本身的
API
也有一定的了解。在第二种方式中,接口程序实现了
Java
标准规范的
JDBC
接口,这样开发人员只要对
JDBC
有了解就可以了。
第三方接口库中的
Java
代码包含
JNI
接口和多个版本的
JDBC
接口程序,可根据你的
JRE
的版本选择相应的
JDBC
程序。
Java
类包加上
Sqlite_jni.dll
文件,组成了
SQLite
的
Java
接口库,在应用
Java
语言调用
JDBC
或
JNI
接口时,都是通过应用
Java
的本地化技术调用
Sqlite_jni.dll
文件,完成对
SQLite
数据库的操作。
下面这段代码演示如何应用
JNI
接口操作
SQLite
。可以看到
Database
类的
exec()
方法是执行
SQL
语句的关键:
Database db = new Database();
try {
//
打开数据库
db.open("c:\\temp\\mydata.slt", 0666);
db.interrupt();
db.busy_timeout(1000);
db.busy_handler(null);
db.exec("create table account (name varchar(10),gale boolean)",result);
db.exec("insert into account values('steve','m')", result);
db.exec("select * from account",result);
Author
:
YiYun QQ
:
33252040 / 99593311
//
关闭数据库
db.close();
} catch (Exception e) {
e.printStackTrace();
}
用户一定要保证在类路径
class_path
中有
“sqlite.jar”,
并且保证在你的
JAVA
库路径
JAVA library path
中有本地库
native library
。用
"SQLite.JDBCDriver"
作为
JDBC
的驱动程序类名。连接
JDBC
的
URL
格式为
jdbc:sqlite:/path
。这里的
path
为指定到
SQLite
数据库文件的路径,例如:
jdbc:sqlite://dirA/dirB/dbfile
jdbc:sqlite://DRIVE:/dirA/dirB/dbfile
jdbc:sqlite://COMPUTERNAME/shareA/dirB/dbfile
参考下面的应用
JDBC
连接
SQLite
的例程:
//
声明
JDBC
驱动程序
Class clz = Class.forName("SQLite.JDBCDriver");
//
连接数据库
Connection conn = DriverManager.getConnection("jdbc:sqlite:/c:/temp/e2.db");
Statement stmt = conn.createStatement();
//
生成
person
表,包含名子和年龄字段
stmt.execute("create table person (name varchar(100),age int)");
//
插入数据
stmt.execute("insert into person values('steve',25)");
//
用
SQL
语句读出数据
result = stmt.executeQuery("select * from person");
while(result.next()){
System.out.println(result.getString(1));
System.out.println(result.getInt(2));
}
运行程序时要在
Java.exe
命令行加入选项
java.library.path
指定到
Sqlite_jni.dll
所在的路径。例如,如果
Sqlite_jni.dll
放在
c:\sqliteNative
路径下面,运行类
com.YiYun.MyClass
的命令行将会是这样:
java -Djava.library.path=c:\sqliteNative com.YiYun.MyClass
。
SQLite
已于
2005
年
6
月
13
日
发布了
Version 3.2.2,
该版本不仅修正了许多的
BUG,
而且访问速度更快,产生的代码量更少。而
JAVA
程序又具有简单易学、面向对象、平台无关性、稳定安全等特点。两者结合起来开发的应用程序必然兼具两方面的优势。
分享到:
相关推荐
嵌入式数据库SQLite与Java2009-01-06 19:54SQLite作为一个开源的嵌入式数据库产品,具有系统开销小,检索效率高的特性,适用于手机、PDA、机顶盒设备等电器,并且作为嵌入式数据库在可下载的消费类应用程序中运行的...
### 嵌入式数据库SQLite与Java:技术特点与接口应用 #### 一、嵌入式数据库概述 在探讨SQLite之前,我们先简要了解一下嵌入式数据库的基本概念及其应用场景。传统的数据库管理系统如Oracle、SQL Server和MySQL等,...
这篇文章介绍嵌入式数据库产品SQLite 的技术特点,并着重讨论研究与Java语言之间的接口,并以实例说明如何使用JAVA 开发基于SQLite 的应用程序。 正文: 通常我们采用各种数据库产品来实现对数据的存储、检索等...
JAVA在SQLite嵌入式数据库中的应用,很专业的问题
### 嵌入式数据库SQLite入门与分析 #### 一、SQLite简介 SQLite是一种轻量级的嵌入式关系型数据库管理系统,最初于2000年由D.Richard Hipp开发并发布。作为一种嵌入式数据库,SQLite与其他传统数据库管理系统(如...
在Java中,常见的嵌入式数据库有H2、SQLite、Derby(Apache)等。例如,H2数据库是一个完全开源的、支持SQL标准的轻量级数据库,它可以被内嵌到Java应用程序中,提供单用户或多用户访问。SQLite则是一个轻量级的、零...
【Java在SQLite嵌入式数据库中的应用】 在许多软件开发场景中,特别是在移动设备和桌面应用程序中,嵌入式数据库由于其轻量级、高效的特点,成为了一个理想的选择。SQLite是一个开源的嵌入式数据库系统,它具有体积...
SQLite是一款广泛应用的开源嵌入式数据库,其特点在于轻量级、高效且易于集成。它遵循SQL92标准,提供了一套完整的SQL语法支持,使得开发者可以在多种项目中灵活运用。"商业也免费"的特性使得SQLite在商业环境中受到...
在选择数据库引擎的过程中,作者对比了多种嵌入式数据库,最终选择了SQLite。SQLite因其高效查询性能和优秀的存储空间优化能力,成为构建电子词典的理想选择。系统功能设计上,参考了金山词霸,选取了核心功能,包括...
作为一个开源的嵌入式数据库产品,具有系统开销小,检索效率高的特性...这篇文章介绍嵌入式数据库产品SQLite 的技术特点,并着重讨论研究与Java 语言之间的接口,并以实例说明如何使用JAVA 开发基于SQLite 的应用程序。
在Java中,我们通常使用SQLite JDBC驱动来与SQLite数据库进行交互,这就是"sqlite驱动 java数据库驱动"所指的内容。SQLite JDBC驱动允许Java应用程序通过标准的JDBC接口来连接和操作SQLite数据库。 `sqlitejdbc-v...
Java在SQLite嵌入式数据库中的应用是一个广泛的领域,涉及到许多重要的技术知识点。SQLite是一个轻量级、开源的SQL数据库引擎,常被用于嵌入式系统和移动应用中,因为它无需服务器进程,可以直接在应用程序中使用。...
总的来说,“StudentMangerSystem”展示了如何在Android环境中利用Java和嵌入式数据库SQLite来开发一个实用的学生信息管理系统。它不仅涉及到数据库设计和操作,还包括Android应用的架构和用户交互设计,对于学习...
在使用SQLite时,我们通常需要与之交互的Java开发环境会用到`sqlitejdbc-v056.jar`,这是一个SQLite的Java驱动,它允许Java应用程序通过JDBC接口连接并操作SQLite数据库。 `sqlite命令.txt`可能包含SQLite的命令行...
在探讨Java嵌入式数据库程序的开发时,首先需要了解嵌入式数据库的定义及其在不同应用场景中的重要性。嵌入式数据库是一种小型的数据库管理系统,常被嵌入到应用程序中,使得数据处理更加轻量级和本地化。相比大型...
《SQLite3嵌入式数据库在ARM-Linux平台上的移植详解》 嵌入式数据库在近年来得到了广泛的关注,尤其在移动设备和物联网(IoT)领域。SQLite作为一个轻量级的、无服务器、自包含的、开源的SQL数据库引擎,因其高效、...
在Java领域,一些常用的嵌入式数据库有H2、SQLite、Derby(Apache)和HSQLDB。 **H2数据库** H2是一款开源的、高性能的Java嵌入式数据库,支持多种数据库模式,包括SQL92、SQL:2003等。它可以在内存中运行,也可以...
SQLite是一款广泛应用于移动开发领域的开源嵌入式数据库,尤其在Java Android平台上。SQLite具有轻量级、绿色软件、单一文件等特点,使得它成为许多小型应用和嵌入式系统的首选数据库解决方案。 SQLite的主要特性:...