Java 生态圈中的嵌入式数据库,哪家强?(中)

简介: 嵌入式数据库一个很陌生的词汇,以前只是听说,但是没有真正使用过,今天小编和大家一起来揭开它的面纱。

三、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-*.zipsqlite-dll-win32-*.zip压缩文件。
  • 3.创建文件夹C:\sqlite,并在此文件夹下解压上面两个压缩文件,将得到 sqlite3.defsqlite3.dllsqlite3.exe文件。
  • 4.添加C:\sqlitePATH环境变量。

最后在命令提示符下,输入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 ";"

如果没有看到上面的结果,安装也很简单!

例如,安装步骤示例:

$ 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 也可以直接通过mavenpom.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的临时数据库,如果没有会自动创建。
  • USERPASSWORD主要用于客户端登录使用。

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的文件。

21.jpg

每次操作名为sqliteDB的数据库时候,数据会持久化到sqliteDB文件中,从而防止数据丢失。

如果想使用可视化客户端工具来访问和管理sqliteDB,可以使用navicat来连接,选择生成的sqliteDB文件,输入相应的账号、密码,便可进行管理维护!

22.jpg23.jpg

四、H2

h2 是一款纯java编写的另一款嵌入式数据库,它本身只是一个类库,即只有一个 jar 文件,可以直接嵌入到应用项目中,同时还提供了非常友好的基于 web 的数据库管理界面。

网上有很多开发者拿它与 derby 做对比,称它与 mysql 数据库兼容性强,口碑较好。

具体是否真的如此,在后文我们会进行相应的性能测试,下面一起来看看在开发中如何使用。

4.1、项目引入

既然 h2 是纯java编写,可以直接通过mavenpom.xml中依赖库文件,即可进行开发!

<!--h2数据库-->
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.4.200</version>
    <scope>runtime</scope>
</dependency>


相关文章
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
NoSQL Java API
在Java环境下如何进行Redis数据库的操作
总的来说,使用Jedis在Java环境下进行Redis数据库的操作,是一种简单而高效的方法。只需要几行代码,就可以实现复杂的数据操作。同时,Jedis的API设计得非常直观,即使是初学者,也可以快速上手。
497 94
|
Java 关系型数据库 MySQL
Java汽车租赁系统源码(含数据库脚本)
Java汽车租赁系统源码(含数据库脚本)
711 4
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
574 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
|
人工智能 JavaScript 安全
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
904 13
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
|
前端开发 JavaScript Java
[Java计算机毕设]基于ssm的OA办公管理系统的设计与实现,附源码+数据库+论文+开题,包安装调试
OA办公管理系统是一款基于Java和SSM框架开发的B/S架构应用,适用于Windows系统。项目包含管理员、项目管理人员和普通用户三种角色,分别负责系统管理、请假审批、图书借阅等日常办公事务。系统使用Vue、HTML、JavaScript、CSS和LayUI构建前端,后端采用SSM框架,数据库为MySQL,共24张表。提供完整演示视频和详细文档截图,支持远程安装调试,确保顺利运行。
558 17
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
2584 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
SQL Java 关系型数据库
使用 JDBC 实现 Java 数据库操作
JDBC(Java Database Connectivity)是 Java 提供的数据库访问技术,允许通过 SQL 语句与数据库交互。本文详细介绍了 JDBC 的使用方法,包括环境准备、编程步骤和完整示例。
1322 7
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
2057 6
|
存储 消息中间件 缓存
面试疑难点解析——Java数据库开发(一)
阿里云再offer 5000人,数据库人才求贤若渴!7月9日 19:00,阿里云数据库事业部的两位技术大咖在线直招10多个岗位,想要进入阿里云吗?快来投递简历吧:https://developer.aliyun.com/special/offerday01
面试疑难点解析——Java数据库开发(一)