Derby - Derby 服务器(Derby 概述、Derby 服务器下载与启动、Derby 连接数据库与创建数据表、Derby 数据库操作)

一、Derby 概述

  1. Derby 是一种轻量级、嵌入式数据库,适用于开发、测试或小型应用

  2. Derby 是使用 Java 编写的,可以无缝集成到 Java 应用中

  3. Derby 支持嵌入式模式与网络服务器模式,在嵌入式模式下,Derby 与应用程序运行在同一 JVM 中,数据库文件存储在本地目录

  4. 在网络服务器模式下,Derby 作为独立数据库服务运行


二、Derby 服务器

  1. 下载 Derby 服务器:https://db.apache.org/derby/

  1. 启动 Derby 服务器:在 Windows 系统上,运行 Derby 根目录下的 bin 目录下的 startNetworkServer.bat
  • 开发前准备,在 pom.xml 文件中添加相关依赖
xml 复制代码
<dependency>
    <groupId>org.apache.derby</groupId>
    <artifactId>derbyclient</artifactId>
    <version>10.14.2.0</version>
</dependency>

三、Derby 连接数据库与创建数据表

1、连接数据库
java 复制代码
String dbURL = "jdbc:derby://localhost:1527/mydb;create=true";

try (Connection connection = DriverManager.getConnection(dbURL)) {
    System.out.println("连接 Derby 成功");
} catch (SQLException e) {
    e.printStackTrace();
}
  1. create=true 表示如果数据库不存在,则创建它,如果数据库已存在,则直接连接到它

  2. 第一次执行时,Derby 会创建一个新的数据库,输出结果如下

    连接 Derby 成功

2、创建数据表
java 复制代码
String createTableSQL = "CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50))";
try (Statement statement = connection.createStatement()) {
    statement.execute(createTableSQL);
    System.out.println("创建表 users 成功");
} catch (SQLException e) {
    if (e.getSQLState().equals("X0Y32")) { // 表已存在时的 SQLState
        System.out.println("表 users 已存在");
    } else {
        System.out.println("创建表失败,错误信息:" + e.getMessage());
    }
}
  1. 第一次执行时,会创建表 users,输出结果如下

    创建表 users 成功

  2. 第二次执行时,表 users 已存在,抛出异常,输出结果如下

    表 users 已存在


四、Derby 数据库操作

1、插入数据
java 复制代码
String insertSQL = "INSERT INTO users (id, name) VALUES (?, ?)";

try (PreparedStatement preparedStatement = connection.prepareStatement(insertSQL)) {
    preparedStatement.setInt(1, 1);
    preparedStatement.setString(2, "Alice");
    preparedStatement.executeUpdate();
    System.out.println("插入数据成功");
} catch (SQLException e) {
    System.out.println("插入数据失败,错误信息:" + e.getMessage());
}
  1. 第一次执行时,会插入数据成功,输出结果如下

    插入数据成功

  2. 第二次执行时,主键冲突,会抛出异常,输出结果如下

    插入数据失败,错误信息:语句已中止,因为它导致"USERS"上所定义的"SQL0000000000-80220011-019a-2efb-15b9-00000f200000"标识的唯一或主键约束条件或唯一索引中出现重复键值。

2、查询数据
java 复制代码
String selectSQL = "SELECT id, name FROM users";

try (Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery(selectSQL)) {
    while (resultSet.next()) {
        System.out.println("ID: " + resultSet.getInt("id") + ", Name: " + resultSet.getString("name"));
    }
}
  • 输出结果如下

    ID: 1, Name: Alice

3、更新数据
java 复制代码
String updateSQL = "UPDATE users SET name = ? WHERE id = ?";

try (PreparedStatement preparedStatement = connection.prepareStatement(updateSQL)) {
    preparedStatement.setString(1, "Bob");
    preparedStatement.setInt(2, 1);
    int rowsAffected = preparedStatement.executeUpdate();
    if (rowsAffected > 0) {
        System.out.println("更新数据成功");
    } else {
        System.out.println("更新数据失败,未找到匹配的记录");
    }
} catch (SQLException e) {
    System.out.println("更新数据失败,错误信息:" + e.getMessage());
}
  • 输出结果如下

    更新数据成功

4、删除数据
java 复制代码
String deleteSQL = "DELETE FROM users WHERE id = ?";

try (PreparedStatement preparedStatement = connection.prepareStatement(deleteSQL)) {
    preparedStatement.setInt(1, 1);
    int rowsAffected = preparedStatement.executeUpdate();
    if (rowsAffected > 0) {
        System.out.println("删除数据成功");
    } else {
        System.out.println("删除数据失败,未找到匹配的记录");
    }
} catch (SQLException e) {
    System.out.println("删除数据失败,错误信息:" + e.getMessage());
}
  • 输出结果如下

    删除数据成功

相关推荐
鸠摩智首席音效师1 天前
linux 系统中 Shutting Down, Restarting, Halting 有什么区别 ?
linux·运维·服务器
CIb0la1 天前
Linux 将继续不支持 HDMI 2.1 实现
linux·运维·服务器
CoderYanger1 天前
C.滑动窗口-求子数组个数-越长越合法——2799. 统计完全子数组的数目
java·c语言·开发语言·数据结构·算法·leetcode·职场和发展
廋到被风吹走1 天前
【数据库】【MySQL】InnoDB外键解析:约束机制、性能影响与最佳实践
android·数据库·mysql
C++业余爱好者1 天前
Java 提供了8种基本数据类型及封装类型介绍
java·开发语言·python
想用offer打牌1 天前
RocketMQ如何防止消息丢失?
java·后端·架构·开源·rocketmq
皮卡龙1 天前
Java常用的JSON
java·开发语言·spring boot·json
吕了了1 天前
85 微PE吕了了修改版--更新!
运维·windows·电脑·系统
掘根1 天前
【消息队列】交换机数据管理实现
网络·数据库
Logic1011 天前
《Mysql数据库应用》 第2版 郭文明 实验6 数据库系统维护核心操作与思路解析
数据库·sql·mysql·学习笔记·计算机网络技术·形考作业·国家开放大学