NetBeans 和 Derby

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的简单表,其中包含两列:IdName。 ID 为INTEGERName 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 数据库。

在此页面中,我们将提及sysinfodblookijstartNetworkServerstopNetworkServer工具。

启动 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选项,可以将输出重定向到文件。

startNetworkServerstopNetworkServer

这些脚本启动和停止 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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值