三、SQLite
SQLite 是 D.RichardHipp 用一个小型的C库开发的一种强有力的嵌入式关系数据库,虽然功能较 Berkeley DB(商业数据库)稍显逊色,但它简单易学、速度较快,同时提供了丰富的数据库接口,提供了对 SQL92 的大多数支持:支持多表和索引、事务、视图、触发和一系列的用户接口及驱动。
SQLite 不仅支持 Windows/Linux/Unix 等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,比起 Mysql、PostgreSQL 这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快,全部源码大致3万行C代码,文件大约 350KB,支持数据库大小至 2TB!
几乎常年占居嵌入式数据库的第一位!
3.1、SQLite安装
3.1.1、windows安装
- 1.访问 SQLite 下载页面
https://www.sqlite.org/download.html
。 - 2.下载
sqlite-tools-win32-*.zip
和sqlite-dll-win32-*.zip
压缩文件。 - 3.创建文件夹
C:\sqlite
,并在此文件夹下解压上面两个压缩文件,将得到sqlite3.def
、sqlite3.dll
和sqlite3.exe
文件。 - 4.添加
C:\sqlite
到PATH
环境变量。
最后在命令提示符下,输入sqlite3
命令,显示如下结果表示安装成功!
C:\>sqlite3 SQLite version 3.7.15.2 2013-01-09 11:53:05 Enter ".help" for instructions Enter SQL statements terminated with a ";"
3.1.2、linux安装
目前,几乎所有版本的 Linux 操作系统都附带 SQLite。所以,只需要在命令行输入输入sqlite3
,即可检查出机器上是否已经安装了 SQLite!
$ sqlite3 SQLite version 3.7.15.2 2013-01-09 11:53:05 Enter ".help" for instructions Enter SQL statements terminated with a ";"
如果没有看到上面的结果,安装也很简单!
- 1.访问 SQLite 下载页面
https://www.sqlite.org/download.html
。 - 2.下载
sqlite-autoconf-*.tar.gz
并上传到 linux 服务器。 - 3.执行安装操作
例如,安装步骤示例:
$ tar xvzf sqlite-autoconf-3071502.tar.gz $ cd sqlite-autoconf-3071502 $ ./configure --prefix=/usr/local $ make $ make install
3.1.3、mac安装
mac安装操作与linux类似。
3.2、项目引入
sqlite 也可以直接通过maven
在pom.xml
中依赖库文件,即可进行开发!
<!--sqlite--> <dependency> <groupId>org.xerial</groupId> <artifactId>sqlite-jdbc</artifactId> <version>3.7.2</version> </dependency>
3.3、环境配置
String DRIVER_CLASS = "org.sqlite.JDBC"; String JDBC_URL = "jdbc:sqlite:sqliteDB.db"; String USER = "root"; String PASSWORD = "root";
说明:
org.sqlite.JDBC
表示使用sqlite
嵌入式数据库模式。JDBC_URL
中的sqliteDB
表示创建一个名为sqliteDB
的临时数据库,如果没有会自动创建。USER
、PASSWORD
主要用于客户端登录使用。
3.4、单元测试应用
下面,来测试一下sqlite
是否可以正常使用。
public class SQLiteTest { /** * 以嵌入式(本地)连接方式连接数据库 */ private static final String JDBC_URL = "jdbc:sqlite:sqliteDB.db"; private static final String DRIVER_CLASS = "org.sqlite.JDBC"; private static final String USER = "root"; private static final String PASSWORD = "root"; public static void main(String[] args) throws Exception { //与数据库建立连接 Class.forName(DRIVER_CLASS); Connection conn = DriverManager.getConnection(JDBC_URL, USER, PASSWORD); Statement statement = conn.createStatement(); //删除表 statement.execute("DROP TABLE IF EXISTS USER_INF"); //创建表 statement.execute("CREATE TABLE USER_INF(id VARCHAR(50) PRIMARY KEY, name VARCHAR(50) NOT NULL, sex VARCHAR(50) NOT NULL)"); //插入数据 statement.executeUpdate("INSERT INTO USER_INF VALUES('1', '程咬金', '男') "); statement.executeUpdate("INSERT INTO USER_INF VALUES('2', '孙尚香', '女') "); statement.executeUpdate("INSERT INTO USER_INF VALUES('3', '猴子', '男') "); //查询数据 ResultSet resultSet = statement.executeQuery("select * from USER_INF"); while (resultSet.next()) { System.out.println(resultSet.getInt("id") + ", " + resultSet.getString("name") + ", " + resultSet.getString("sex")); } //关闭连接 statement.close(); conn.close(); } }
输出结果:
1, 程咬金, 男 2, 孙尚香, 女 3, 猴子, 男
当程序运行完之后,也会在当前项目的根目录下生成上文自定义的一个名为sqliteDB
的文件。
每次操作名为sqliteDB
的数据库时候,数据会持久化到sqliteDB
文件中,从而防止数据丢失。
如果想使用可视化客户端工具来访问和管理sqliteDB
,可以使用navicat
来连接,选择生成的sqliteDB
文件,输入相应的账号、密码,便可进行管理维护!
四、H2
h2 是一款纯java编写的另一款嵌入式数据库,它本身只是一个类库,即只有一个 jar 文件,可以直接嵌入到应用项目中,同时还提供了非常友好的基于 web 的数据库管理界面。
网上有很多开发者拿它与 derby 做对比,称它与 mysql 数据库兼容性强,口碑较好。
具体是否真的如此,在后文我们会进行相应的性能测试,下面一起来看看在开发中如何使用。
4.1、项目引入
既然 h2 是纯java编写,可以直接通过maven
在pom.xml
中依赖库文件,即可进行开发!
<!--h2数据库--> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.4.200</version> <scope>runtime</scope> </dependency>