阿帕奇德比。本文介绍如何安装 Apache Derby 数据库、如何启动 Derby 服务器、如何通过 Java 连接到 Derby 以及如何使用 Derby 命令行工具发出 SQL 语句。还解释了将 Apache Derby 安装为 Windows 服务。
Apache Derby 是一个用 Java 编写的开源数据库。它是免费的并且性能良好。Apache Derby 在 JDK 中使用,称为 Java DB。Apache Derby 和 Java DB 本质上是相同的。Apache Derby 是 JDBC 4.0 的参考实现,与 ANSI-SQL 兼容。JDBC 是连接数据库的 Java 接口。
Derby 可用于服务器模式和所谓的嵌入式模式。如果 Derby 在服务器模式下运行,您将启动负责处理数据库请求的 Derby 网络服务器。在嵌入式模式下,Derby 在应用程序的 JVM(Java 虚拟机)中运行。在这种模式下,只有应用程序可以访问数据库,例如另一个用户/应用程序将无法访问数据库。
从 Apache 网站http://db.apache.org/derby/下载最新的 Derby 版本。选择 bin 分发并将此 zip 解压缩到您选择的目录。
还要使 Derby 工具在您的路径中可用:
将环境变量 DERBY_HOME 设置为 Derby 安装目录
将 DERBY_HOME/bin 添加到“路径”环境变量
在命令行中使用以下命令启动 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
要通过 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();
}
}
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'
使用工具 dblook。在控制台输入 dblook 查看选项,该工具非常好用。例如将模式“myschema”写入文件“lars.sql”。
dblook -d 'jdbc:derby:c:\temp\db\FAQ\db' -z myschema -o lars.sql
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
您应该会收到一条成功消息。
如果出现问题并且您想删除已安装的服务,您可以使用:
|
运行 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 服务控制面板中启动/调整服务。