NetBeans 和 Derby
原文: http://zetcode.com/db/apachederbytutorial/netbeans/
在本章中,我们将使用 NetBeans IDE 中的 Derby 数据库。 NetBeans 在其基本 Java SE 捆绑软件中对 Derby 数据库提供了内置支持。
到目前为止,我们已经与 Apache Derby 发行版合作。 在本章中,我们将使用 Java DB。 它是相同的数据库,只是名称不同。 Java DB 是 Java 6 版本附带的 Java 发行版。
图:NetBeans 服务窗口
在“服务”窗口中,我们展开“数据库”节点。 我们可以看到两个节点。 Java DB 节点和驱动节点。 在 Java DB 节点中,我们拥有所有数据库。 在驱动程序节点中,我们可以看到用于连接到 RDBMS 的各种 JDBC 驱动程序。 这些数据库驱动程序随 NetBeans IDE 一起提供。 我们有适用于嵌入式和服务器模式的 Java DB 驱动程序。
图:Java DB 属性窗口
上图是“Java DB 属性”对话框窗口。 当我们右键单击 Java DB 节点并选择Properties
选项时,将显示该窗口。 在此对话框中,我们可以设置两个重要设置。 Java DB 安装目录和 Java DB 系统目录。
建立数据库
首先要做的是创建一个新的数据库。 我们将创建testdb
数据库。
图:Java DB 上下文菜单
当我们右键单击 Java DB 节点时,将显示一个上下文菜单。 它具有四个选项:启动服务器,停止服务器,创建数据库和属性。 我们选择创建数据库项来创建一个新数据库。
图:“创建 Java DB 数据库”对话框
弹出对话框。 在此对话框窗口中,我们提供数据库名称,用户名和密码。 注意数据库位置字符串。 这是 Java DB 系统目录,将在其中创建我们的数据库文件。 默认的 Java DB 系统目录是主目录中的.netbeans-derby
目录。
图:创建新数据库
目前,我们已经创建了一个新数据库。 它通过 Java DB 节点下的新数据库图标直观地指示。
数据库连接
创建数据库后,我们创建一个数据库连接。
NetBeans 将这些图标用于连接对象。 第一个图标用于断开连接的数据库连接对象,第二个图标用于已建立的数据库连接对象。
上面的连接是使用 Java DB 服务器驱动程序创建的 Java DB 连接。 请注意,当我们创建testdb
数据库时,将自动启动 Java DB 服务器并创建连接。 可以通过右键单击 Java DB 驱动程序并选择“连接使用”选项来创建新的数据库连接。
我们将创建一个嵌入式 Java DB 数据库连接。 创建连接之前,如果 Java DB 服务器正在运行,则需要停止它。 Java DB 数据库不能由 Java DB 服务器引导,也不能同时由嵌入式驱动程序连接。 注意,我们不必显式启动服务器。 该服务器可以在后台启动。 例如,通过连接到 Java DB 服务器连接对象或创建新数据库。
图:停止服务器
我们用鼠标右键单击 Java DB 节点。 如果启用了“停止服务器”选项,则表示服务器正在运行。 我们选择它来停止服务器。
图:创建嵌入式连接
要创建嵌入式连接,我们右键单击 Java DB 嵌入式驱动程序,然后选择连接使用选项。 同样,我们通过选择 Java DB 服务驱动程序来创建服务器连接。
图:新建连接向导
我们有一个新建连接向导对话框。 在此对话框中,我们填写数据库名称和用户凭据。 JDBC URL 是根据此数据创建的。 我们已经指定了testdb
数据库的完整路径。 这里似乎没有考虑 Java DB 系统目录。
成功创建嵌入式数据库连接后,我们在 NetBeans Services 窗口中看到以上图标。
建立表
数据库连接已创建。 接下来要做的是创建一个新的数据库表。 我们将创建一个名为FRIENDS
的简单表,其中包含两列:Id
和Name
。 ID 为INTEGER
和Name VARCHAR(30)
。
我们扩展数据库连接节点,并进一步扩展USER12
模式。 我们右键单击表图标,然后选择创建表选项。
图:创建一个新表
出现创建表对话框。 我们创建两列。 ID 和名称。
图:创建的Friends
表
FRIENDS
表已创建。 现在Tables
节点是可扩展的,我们看到一个新的表图标。
图:执行命令
接下来,我们将执行一些 SQL 语句。 我们右键单击FRIENDS
表图标,然后选择执行命令选项。 NetBeans 中将出现一个新的 SQL 命令窗口。
图:将数据插入FRIENDS
表
在“SQL 命令”窗口中,我们编写了几个INSERT INTO SQL
语句。 我们通过单击“运行 SQL”图标来执行语句。 该图标是带有绿色三角形的棕色椭圆形对象。 我们也可以使用Ctrl + Shift + E
快捷方式执行 SQL 语句。
图:查看FRIENDS
数据
Derby 工具
原文: http://zetcode.com/db/apachederbytutorial/tools/
在本章中,我们提到了 Derby 工具。 Derby 工具和工具是 Derby 随附的一组脚本。 它们通常用于创建,检查和更新 Derby 数据库。
在此页面中,我们将提及sysinfo
,dblook
,ij
,startNetworkServer
和stopNetworkServer
工具。
启动 Derby 工具
Derby 工具可以两种方式运行。 我们使用位于 Derby 安装目录的 bin 目录中的脚本名称,也可以使用derbyrun.jar
文件启动它们。
$ $DERBY_HOME/bin/ij
$ java -jar $DERBY_HOME/lib/derbyrun.jar ij
我们可以通过在终端中指定脚本名称来启动ij
工具。 第二行使用derbyrun.jar
文件运行ij
。
系统信息
sysinfo
工具提供有关操作系统,Java 和 Derby 的信息。 它将打印 Java 版本,Java 主目录,操作系统版本,Java 运行时版本,Derby 版本,当前和支持的语言环境。 该工具对于跟踪 Derby 的某些安装或配置问题很有用。
$ $DERBY_HOME/bin/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/derby.jar:/home/janbodnar/bin/jdk1.8.0_111/db/lib/derbynet.jar:/home/janbodnar/bin/jdk1.8.0_111/db/lib/derbytools.jar:/home/janbodnar/bin/jdk1.8.0_111/db/lib/derbyoptionaltools.jar:/home/janbodnar/bin/jdk1.8.0_111/db/lib/derbyclient.jar
OS name: Linux
OS architecture: amd64
OS version: 4.4.0-66-generic
...
这是特定系统上提供的信息的摘录。
ij
ij
是一个交互式脚本工具。 它用于对 Derby 数据库运行脚本或交互式查询。
$ cat cars.sql
SET SCHEMA USER12;
CREATE TABLE CARS(ID BIGINT NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY
(START WITH 1, INCREMENT BY 1), NAME VARCHAR(30), PRICE INT);
INSERT INTO CARS(Name, Price) VALUES('Audi', 52642);
INSERT INTO CARS(Name, Price) VALUES('Mercedes', 57127);
INSERT INTO CARS(Name, Price) VALUES('Skoda', 9000);
INSERT INTO CARS(Name, Price) VALUES('Volvo', 29000);
INSERT INTO CARS(Name, Price) VALUES('Bentley', 350000);
INSERT INTO CARS(Name, Price) VALUES('Citroen', 21000);
INSERT INTO CARS(Name, Price) VALUES('Hummer', 41400);
INSERT INTO CARS(Name, Price) VALUES('Volkswagen', 21600);
我们有一个cars.sql
文件,它创建一个数据库模式和一个CARS
表。
$ $DERBY_HOME/bin/ij
ij version 10.11
ij> CONNECT 'jdbc:derby:testdb;user=user12;create=true';
我们启动ij
工具。 我们创建一个testdb
数据库并建立连接。
ij> SHOW CONNECTIONS;
CONNECTION0* - jdbc:derby:testdb
* = current connection
SHOW CONNECTIONS
语句显示与 Derby 数据库的打开的连接。
ij> RUN 'cars.sql';
ij> CREATE SCHEMA USER12;
0 rows inserted/updated/deleted
ij> CREATE TABLE CARS(ID INT PRIMARY KEY, NAME VARCHAR(30), PRICE INT);
0 rows inserted/updated/deleted
ij> INSERT INTO CARS VALUES(1, 'Audi', 52642);
1 row inserted/updated/deleted
ij> INSERT INTO CARS VALUES(2, 'Mercedes', 57127);
1 row inserted/updated/deleted
ij> INSERT INTO CARS VALUES(3, 'Skoda', 9000);
...
我们加载并执行cars.sql
网站。 我们被告知正在进行的操作。
ij> SELECT * FROM CARS;
ID |NAME |PRICE
------------------------------------------------------
1 |Audi |52642
2 |Mercedes |57127
3 |Skoda |9000
4 |Volvo |29000
5 |Bentley |350000
6 |Citroen |21000
7 |Hummer |41400
8 |Volkswagen |21600
8 rows selected
我们从CARS
表中选择所有行。
ij> CONNECT 'jdbc:derby:testdb;shutdown=true';
ERROR 08006: Database 'testdb' shutdown.
在 Derby 中关闭数据库会导致异常。 预期错误 08006。
ij> SHOW CONNECTIONS;
No current connection
连接已关闭。
ij> EXIT;
我们使用EXIT
命令退出ij
工具。 请注意,每个命令后都有分号。
dblook
dblook
工具用于保存数据库对象的数据定义语言,包括表,视图,索引和触发器。
$DERBY_HOME/bin/dblook -d jdbc:derby:testdb
-- Timestamp: 2017-03-13 20:05:43.281
-- Source database is: testdb
-- Connection URL is: jdbc:derby:testdb
-- appendLogs: false
– DDL Statements for schemas
CREATE SCHEMA “USER12”;
– DDL Statements for tables
CREATE TABLE “USER12”.“CARS” (“ID” INTEGER NOT NULL, “NAME” VARCHAR(30), “PRICE” INTEGER);
CREATE TABLE “APP”.“CARS” (“ID” BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), “NAME” VARCHAR(30), “PRICE” INTEGER);
– DDL Statements for keys
– PRIMARY/UNIQUE ALTER TABLE “APP”.“CARS” ADD CONSTRAINT “SQL170313140819740” PRIMARY KEY (“ID”);
ALTER TABLE “USER12”.“CARS” ADD CONSTRAINT “SQL170313200304680” PRIMARY KEY (“ID”);
在上面的示例中,我们已从testdb
数据库中转储了对象。 使用-d
选项,我们提供了数据库的连接 URL。 在我们的案例中,dblook
工具保存了一个数据库架构和一个表。 使用-o
选项,可以将输出重定向到文件。
startNetworkServer
和stopNetworkServer
这些脚本启动和停止 Derby Network 服务器。 如果是联网服务器,则可以创建到 Derby 数据库的多个连接。
$ $DERBY_HOME/bin/startNetworkServer &
[1] 12421
$ Mon Mar 13 20:12:39 CET 2017 : Security manager installed using the Basic server security policy.
Mon Mar 13 20:12:40 CET 2017 : Apache Derby Network Server - 10.11.1.2 - (1629631) started and ready to accept connections
在这里,我们使用startNetworkServer
脚本启动 Derby Network Server。
ij> CONNECT 'jdbc:derby://localhost:1527/testdb';
在这里,我们通过 Derby Network Server 连接到testdb
数据库。 网络连接的连接 URL 是不同的。
ij> SELECT * FROM USER12.CARS;
ID |NAME |PRICE
------------------------------------------------------
1 |Audi |52642
2 |Mercedes |57127
3 |Skoda |9000
4 |Volvo |29000
5 |Bentley |350000
6 |Citroen |21000
7 |Hummer |41400
8 |Volkswagen |21600
8 rows selected
我们从CARS
表中选择所有汽车。 由于我们没有在连接 URL 中提供数据库模式,因此我们现在必须指定它。 数据库模式是用户名; 在我们的情况下USER12
。
$ $DERBY_HOME/bin/stopNetworkServer
Mon Mar 13 20:15:42 CET 2017 : Apache Derby Network Server - 10.11.1.2 - (1629631) shutdown
$ Mon Mar 13 20:15:42 CET 2017 : Apache Derby Network Server - 10.11.1.2 - (1629631) shutdown
我们已经使用stopNetworkServer
脚本停止了服务器。
NetworkServerControl
NetworkServerControl
是一个系统工具,可以启动和停止 Derby 网络服务器并配置或检索诊断信息。 除ping
以外,所有命令只能从运行服务器的计算机上执行。
$ $DERBY_HOME/bin/NetworkServerControl start &
使用start
命令,我们启动 Derby 服务器。
$ $DERBY_HOME/bin/NetworkServerControl ping
Tue Mar 21 15:53:29 CET 2017 : Connection obtained for host: localhost, port number 1527.
ping
命令测试 Derby 服务器是否已启动。
$ $DERBY_HOME/bin/NetworkServerControl sysinfo
--------- Derby Network Server Information --------
Version: CSS10110/10.11.1.2 - (1629631) Build: 1629631 DRDA Product Id: CSS10110
-- listing properties --
derby.drda.traceDirectory=/home/janbodnar/.derby/
derby.drda.maxThreads=0
derby.drda.sslMode=off
derby.drda.keepAlive=true
...
sysinfo
命令提供系统信息。
$ $DERBY_HOME/bin/NetworkServerControl runtimeinfo
--- Derby Network Server Runtime Information ---
---------- Session Information ---------------
Session # :3
-------------------------------------------------------------
# Connection Threads : 1
# Active Sessions : 1
# Waiting Sessions : 0
Total Memory : 78643200 Free Memory : 75359512
runtimeinfo
命令提供有关正在运行的网络服务器的会话,线程,预备语句以及内存使用的大量调试信息。
$ $DERBY_HOME/bin/NetworkServerControl shutdown
Tue Mar 21 15:56:43 CET 2017 : Apache Derby Network Server - 10.11.1.2 - (1629631) shutdown
Tue Mar 21 15:56:44 CET 2017 : Apache Derby Network Server - 10.11.1.2 - (1629631) shutdown
shutdown
命令停止 Derby 服务器。
在本章中,我们写了有关 Derby 工具的文章。
在 SQL 命令窗口中运行SELECT * FROM FRIENDS
,我们看到一个新窗口弹出。 在此窗口中,我们有一个表小部件,其中的数据按列和行进行组织。 我们有图标来修改此 gui 组件中的数据。
上图显示了用于处理表中数据的图标。 前两个图标分别用于插入新记录和删除所选记录。 如果我们使用鼠标指针选择更多的行并同时按下Shift
键,则可以删除多个记录。 如果修改了数据,则会启用“提交记录”图标。 仅在我们执行此操作后才保存数据。 除了 SQL 语句,我们可以使用 GUI 工具修改数据。 通过双击记录,将显示一个行小部件。 在此小部件中,我们可以更改数据。 通过单击“提交记录”操作来保存更改。
在本章中,我们已经在 NetBeans IDE 中使用 Java DB。