ZetCode

Derby 的安装和配置

最后修改于 2020 年 7 月 6 日

在接下来的页面中,我们将展示如何安装 Derby 并根据我们的需要配置 Derby。

我们从 db.apache.org/derby/ 下载最新版本的 Derby。我们创建一个安装目录并将压缩文件解压到此目录。

$ wget http://tux.rainside.sk/apache//db/derby/db-derby-10.13.1.1/db-derby-10.13.1.1-bin.zip

使用 wget 工具,我们下载 Derby 10.13.1 版本。

$ unzip db-derby-10.13.1.1-bin.zip 
$ cd db-derby-10.13.1.1-bin/

我们解压缩存档并进入该目录。

$ ls
bin   docs        javadoc  lib      NOTICE              test
demo  index.html  KEYS     LICENSE  RELEASE-NOTES.html

我们列出安装目录的内容。在 bin 子目录中,我们有几个 Derby 工具。docs 目录提供了 Derby 的文档,格式为 HTML 和 PDF。在 lib 子目录中,有几个用于使用 Derby 的 JAR 文件。

Java DB

自从 Java 6 以来,Derby 就包含在 JDK 中。Java DB 是 Apache Derby 的一个受支持的版本,包含与 Apache Derby 相同的二进制文件。

$ ls $JAVA_HOME/db
3RDPARTY  bin  lib  LICENSE  NOTICE  README-JDK.html  RELEASE-NOTES.html

在 JDK 安装目录中,我们有一个名为 db 的子目录,我们在其中找到 Java DB 文件。

在发布说明的“概述”部分,我们读到以下内容:Derby 是一个纯 Java 关系数据库引擎,使用标准 SQL 和 JDBC 作为其 API

Derby 的功能包括

环境变量

设置环境变量是可选的。使用环境变量将使我们的生活更轻松。

$ export DERBY_HOME=~/bin/derby
$ export PATH=$PATH:~/bin/derby/bin
$ export DERBY_OPTS=-Dderby.system.home=/home/janbodnar/.derby

我们将 DERBY_HOME 变量设置为 Derby 安装目录。一些工具可能会使用此变量。然后我们添加一个 bin 子目录到 PATH 变量。这样我们就无需完全指定 Derby 工具的路径。在 DERBY_OPTS 环境变量中,我们可以设置各种与 Derby 或 Java 相关的选项。例如,我们设置 derby.system.home 属性。

$ java -jar $DERBY_HOME/lib/derbyrun.jar sysinfo
------------------ Java Information ------------------
Java Version:    1.8.0_111
Java Vendor:     Oracle Corporation
Java home:       /home/janbodnar/bin/jdk1.8.0_111/jre
Java classpath:  /home/janbodnar/bin/jdk1.8.0_111/db/lib/derbyrun.jar
OS name:         Linux
OS architecture: amd64
OS version:      4.4.0-66-generic
...

我们使用 derbyrun.jar 文件执行 sysinfo 工具以获取有关 Java 和 Derby 的一些信息。

创建数据库

Derby 没有像 MySQL 或 Oracle 那样的 CREATE DATABASE 语句。我们必须通过创建连接并设置连接属性 create=true 来创建数据库。

$ $DERBY_HOME/bin/ij
ij version 10.11
ij>

我们启动 ij 工具。

ij> CONNECT 'jdbc:derby:tmpdb;user=tmpuser;create=true';

在 Derby 系统目录中创建一个 tmpdb 数据库,并建立与新创建数据库的连接。连接以嵌入模式创建。

$ ls ~/.derby/
derby.log  testdb  tmpdb

数据库在 Derby 系统目录中创建。

ij> CREATE TABLE FRIENDS(ID INT PRIMARY KEY, NAME VARCHAR(25));
0 rows inserted/updated/deleted
ij> INSERT INTO FRIENDS(ID, NAME) VALUES(1, 'Jane');
1 row inserted/updated/deleted
ij> INSERT INTO FRIENDS(ID, NAME) VALUES(2, 'Thomas');
1 row inserted/updated/deleted
ij> INSERT INTO FRIENDS(ID, NAME) VALUES(3, 'Beky');
1 row inserted/updated/deleted

我们创建一个 FRIENDS 表并向其中添加三行。

ij> SELECT * FROM FRIENDS;
ID         |NAME                     
-------------------------------------
1          |Jane                     
2          |Thomas                   
3          |Beky                     

3 rows selected

我们检查数据。

ij> SHOW TABLES IN TMPUSER;
TABLE_SCHEM         |TABLE_NAME                    |REMARKS             
------------------------------------------------------------------------
TMPUSER             |FRIENDS                       |                    

1 row selected

当我们创建连接时,我们指定了一个用户名。用户名是创建 FRIENDS 表的数据库模式。

ij> DISCONNECT;
ij> SHOW CONNECTIONS;
No connections available.
ij> EXIT;
$ 

我们断开与 tmpdb 数据库的连接。SHOW CONNECTIONS 语句告知没有打开的连接。我们使用 EXIT 命令退出 ij 工具。

$ rm -rf ~/.derby/tmpdb/

我们从 Derby 系统中删除数据库。Derby 没有 DROP DATABASE 语句。

这是 Derby 教程章节的结尾,在其中我们安装并配置了 Derby。