Apache Derby 数据库 - 教程

2023-11-16

阿帕奇德比。本文介绍如何安装 Apache Derby 数据库、如何启动 Derby 服务器、如何通过 Java 连接到 Derby 以及如何使用 Derby 命令行工具发出 SQL 语句。还解释了将 Apache Derby 安装为 Windows 服务。

1. 阿帕奇德比

1.1。概述

Apache Derby 是一个用 Java 编写的开源数据库。它是免费的并且性能良好。Apache Derby 在 JDK 中使用,称为 Java DB。Apache Derby 和 Java DB 本质上是相同的。Apache Derby 是 JDBC 4.0 的参考实现,与 ANSI-SQL 兼容。JDBC 是连接数据库的 Java 接口。

1.2. 服务器与嵌入式模式

Derby 可用于服务器模式和所谓的嵌入式模式。如果 Derby 在服务器模式下运行,您将启动负责处理数据库请求的 Derby 网络服务器。在嵌入式模式下,Derby 在应用程序的 JVM(Java 虚拟机)中运行。在这种模式下,只有应用程序可以访问数据库,例如另一个用户/应用程序将无法访问数据库。

2. 德比的安装

从 Apache 网站http://db.apache.org/derby/下载最新的 Derby 版本。选择 bin 分发并将此 zip 解压缩到您选择的目录。

还要使 Derby 工具在您的路径中可用:

  • 将环境变量 DERBY_HOME 设置为 Derby 安装目录

  • 将 DERBY_HOME/bin 添加到“路径”环境变量

3.服务器模式

3.1。以服务器模式启动 Derby

在命令行中使用以下命令启动 Derby 网络服务器(位于 Derby 安装目录/bin 中)。在 Microsoft Windows 上,可以使用 .bat 版本。

startNetworkServer

这将启动可以为无限数量的数据库提供服务的网络服务器。默认情况下,服务器将侦听端口 1527,但这可以通过-p选项进行更改。

startNetworkServer -p 3301

默认情况下,Derby 将只接受来自 localhost 的连接。要使 Derby 服务器也接受来自其他主机的连接,请使用以下启动命令。将“sampleserver.sampledomain.com”替换为服务器的名称或 IP。然后,服务器将只接受来自其他服务器的连接作为本地主机。

startNetworkServer -h sampleserver.sampledomain.com

如果应允许来自 localhost 和任何其他服务器的连接,请使用以下内容。

startNetworkServer -h 0.0.0.0

3.2. 通过 Java 连接到 Derby 服务器

要通过 Java 代码连接到网络服务器,您需要在类路径中包含 derbyclient.jar。此数据库的网络连接字符串是服务器的 IP 地址:端口号。例如,对于在 localhost 上运行的服务器,您可以通过以下字符串创建一个新数据库。

jdbc:derby://localhost:1527/dbname;create=true

如果要连接到现有数据库,可以使用以下字符串。

jdbc:derby://localhost:1527/c:\temp\mydatabase

例如,一个小型 Java 客户端可能如下所示。这假设您已经创建了一个名为表 users 的模式,其中包含“name”和“number”列。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

public class DerbyTest {
    private Connection connect = null;
    private Statement statement = null;
    private ResultSet resultSet = null;

    public DerbyTest() throws Exception {
        try {

            Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();
            connect = DriverManager
                    .getConnection("jdbc:derby://localhost/c:/temp/db/FAQ/db");
            PreparedStatement statement = connect
                    .prepareStatement("SELECT * from USERS");

            resultSet = statement.executeQuery();
            while (resultSet.next()) {
                String user = resultSet.getString("name");
                String number = resultSet.getString("number");
                System.out.println("User: " + user);
                System.out.println("ID: " + number);
            }
        } catch (Exception e) {
            throw e;
        } finally {
            close();
        }

    }

    private void close() {
        try {
            if (resultSet != null) {
                resultSet.close();
            }
            if (statement != null) {
                statement.close();
            }
            if (connect != null) {
                connect.close();
            }
        } catch (Exception e) {

        }
    }

    public static void main(String[] args) throws Exception {
        DerbyTest dao = new DerbyTest();
    }

}

4. 德比工具

4.1。从命令行使用 Derby (ij)

ij 是 Derby 的交互式 JDBC 脚本工具。它是一个简单的实用程序,用于针对 Derby 数据库运行脚本或交互式查询。要启动该工具,请打开命令外壳并输入“ij”。这将启动一个 shell 程序,它可以连接到您的数据库并执行 SQL 命令。输入“exit;”停止此工具 并按下进入. 在 ij 中,每一行都需要以;.

如果要连接到 Derby 数据库,embedded mode可以使用以下命令。在此示例中,数据库位于 c:\temp\db\FAQ\db。

connect 'jdbc:derby:c:\temp\db\FAQ\db';

如果要连接到正在运行的 Derby 数据库,server mode则可以使用以下命令。

connect 'jdbc:derby://localhost:1527/c:\temp\db\FAQ\db;create=true';

断开与数据库的连接。

disconnect;

要从 ij 运行 SQL 脚本,请使用以下命令。

run 'sqlscript.sql'

您也可以直接使用 SQL,例如

select * from SCHEMA1.USERS where NUMBER='lars'

4.2. 数据库模式的 SQL 转储

使用工具 dblook。在控制台输入 dblook 查看选项,该工具非常好用。例如将模式“myschema”写入文件“lars.sql”。

dblook -d 'jdbc:derby:c:\temp\db\FAQ\db' -z myschema -o lars.sql

5. 将 Derby Server 作为 Windows 服务运行

Derby Server 通过批处理程序启动。在服务器环境中,如果服务器重新启动/启动,该批处理程序应该会自动启动。Windows 程序“srvmgr”可用于此目的。工具详情请查看官方文档;下面将描述如何为 Apache Derby 完成此操作。安装“srvmgr”并记住安装路径。

我们将调用我们的服务“ApacheDerby”,批处理文件位于“C:\db-derby\bin\startNetworkServer.bat”下。在命令行中通过以下方式注册服务:

# This assumes the "srvmgr" tools are installed in c:\Windows\system32\
instsrv ApacheDerby c:\Windows\system32\srvany.exe

您应该会收到一条成功消息。

如果出现问题并且您想删除已安装的服务,您可以使用:

# This will remove a service installed with the name ApacheDerby
instsrv ApacheDerby REMOVE

运行 Regedt32.exe 并找到以下子项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ApacheDerby。

从编辑菜单中,选择新建  并添加一个名为Parameters.

选择Parameters您刚刚创建的密钥。从编辑菜单中,选择新建  字符串值并维护以下值。

Value Name: Application
Data Type : REG_SZ
String : C:\db-derby\bin\startNetworkServer.bat

Value Name: AppDirectory
Data Type : REG_SZ
String : C:\db-derby\bin\

Value Name: AppParameters
Data Type : REG_SZ
String : -h 0.0.0.0

现在在 Windows 服务控制面板中启动/调整服务。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache Derby 数据库 - 教程 的相关文章