| // |
| // Licensed to the Apache Software Foundation (ASF) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The ASF licenses this file |
| // to you under the Apache License, Version 2.0 (the |
| // "License"); you may not use this file except in compliance |
| // with the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, |
| // software distributed under the License is distributed on an |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| // KIND, either express or implied. See the License for the |
| // specific language governing permissions and limitations |
| // under the License. |
| // |
| |
| = 使用 Java DB (Derby) 数据库 |
| :jbake-type: tutorial |
| :jbake-tags: tutorials |
| :jbake-status: published |
| :icons: font |
| :syntax: true |
| :source-highlighter: pygments |
| :toc: left |
| :toc-title: |
| :description: 使用 Java DB (Derby) 数据库 - Apache NetBeans |
| :keywords: Apache NetBeans, Tutorials, 使用 Java DB (Derby) 数据库 |
| |
| 本文档说明了如何在 NetBeans IDE 中设置与 link:http://www.oracle.com/technetwork/java/javadb/overview/index.html[+Java DB+] 数据库的连接。在建立连接之后,即可开始在 IDE 中使用该数据库,您可以执行的操作包括创建表、用数据填充表、运行 SQL 语句和查询等。 |
| |
| Java DB 数据库是 Sun 支持的 link:http://db.apache.org/derby/[+Apache Derby+] 版本。Java DB 是完全事务型、安全且基于标准的数据库服务器,它全部采用 Java 编写,并且完全支持 SQL、JDBC API 和 Java EE 技术。Java DB 数据库与 link:http://glassfish.dev.java.net/[+GlassFish+] 应用服务器打包在一起,也包含在 link:http://download.oracle.com/javase/6/[+JDK 6+] 中。有关 Java DB 数据库的详细信息,请查阅link:http://www.oracle.com/technetwork/java/javadb/documentation/index.html[+正式文档+]。 |
| |
| |
| image::images/netbeans-stamp-80-74-73.png[title="此页上的内容适用于 NetBeans IDE 7.2、7.3、7.4 和 8.0"] |
| |
| |
| *要学习本教程,您需要具备以下软件和资源。* |
| |
| |=== |
| |软件或资源 |要求的版本 |
| |
| |link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |7.2、7.3、7.4、8.0、Java EE |
| |
| |link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Java 开发工具包 (JDK)+] |版本 7 或 8 |
| |
| |Java DB |版本 10.4.x、10.5.x |
| |=== |
| |
| *注:* |
| |
| * Java DB 是在安装 JDK 7 或 JDK 8 时安装的(在 Mac OS X 上除外)。如果使用的是 Mac OS X,则可以手动下载并安装 link:http://www.oracle.com/technetwork/java/javadb/downloads/index.html[+Java DB+],也可以使用通过 Java EE 版的 NetBeans IDE 安装程序安装的 Java DB。 |
| |
| |
| == 配置数据库 |
| |
| 如果您在 NetBeans IDE 安装中注册了 GlassFish Server,则将自动注册 Java DB。因此,可以向下跳转至<<starting,启动服务器并创建数据库>>。 |
| |
| 如果您单独下载了 GlassFish Server,并需要获取有关在 NetBeans IDE 中对其进行注册的帮助,请参见 IDE 的“帮助目录”(F1 键)中的*注册 GlassFish Server 实例*。 |
| |
| 如果仅下载了 Java DB 本身,请执行以下步骤。 |
| |
| 1. 运行自解压文件。将在与该文件相同的位置创建一个名为 "javadb" 的文件夹。如果仅下载了 Java DB,并且希望将该数据库服务器放在与其解压缩位置不同的位置中,现在应重新对其定位。 |
| 2. 在系统上,创建一个新目录,作为数据库服务器的各实例的主目录。例如,可以在 Java DB 根目录 (javadb) 或其他任意位置创建此文件夹。 |
| |
| 在继续执行下一步操作之前,应了解 Java DB 根目录的各个组成部分,这一点很重要: |
| |
| * ``demo`` 子目录包含演示程序。 |
| * ``bin`` 子目录包含用于执行实用程序和设置环境的脚本。 |
| * ``javadoc`` 子目录包含通过源代码注释生成的 API 文档。 |
| * ``docs`` 子目录包含 Java DB 文档。 |
| * ``lib`` 子目录包含 Java DB jar 文件。 |
| |
| |
| == 在 NetBeans IDE 中注册数据库 |
| |
| 配置了数据库之后,执行以下步骤在 IDE 中注册 Java DB。 |
| |
| 1. 在 "Services"(服务)窗口中,右键单击 "Java DB Database"(Java DB 数据库)节点,然后选择 "Properties"(属性),以打开 "Java DB Settings"(Java DB 设置)对话框。 |
| 2. 在 "Java DB Installation"(Java DB 安装)文本字段中,输入在上一步中指定的 Java DB 根目录 (javadb) 的路径。 |
| 3. 对于 "Database Location"(数据库位置),请使用默认位置(如果已提供位置)。单击 "OK"(确定)。 |
| |
| 例如,在 Windows 计算机上,默认位置可能类似于 ``C:\Documents and Settings\username\.netbeans-derby`` 。 |
| |
| image::images/javadb-props.png[title="Java DB 服务器和数据库的默认设置示例"] |
| |
| *注:*如果 "Database Location"(数据库位置)字段为空,将需要设置数据库所在目录的路径。将需要为数据库创建目录(如果不存在)。 |
| |
| |
| == 启动服务器并创建数据库 |
| |
| 在 "Services"(服务)窗口中右键单击 "Java DB" 节点时,将显示 Java DB 数据库菜单选项。通过这些上下文菜单项,可以启动和停止数据库服务器、创建新的数据库实例,以及在 IDE 中注册数据库服务器(如以上步骤所示)。要启动数据库服务器,请执行以下操作: |
| |
| 1. 在 "Services"(服务)窗口中,右键单击 "Java DB" 节点,然后选择 "Start Server"(启动服务器)。请注意 "Output"(输出)窗口中的以下输出内容,该内容指示服务器已经启动: |
| image::images/output-start-db.png[] |
| 2. 右键单击 "Java DB" 节点,然后选择 "Create Database"(创建数据库),以打开 "Create Java DB Database"(创建 Java DB 数据库)对话框。 |
| 3. 键入 ``contact`` 作为数据库名称。 |
| 4. 键入 ``nbuser`` 作为用户名和口令。单击 "OK"(确定)。 |
| image::images/javadb-createdb.png[] |
| |
| *注:*"Database Location"(数据库位置)是从 GlassFish 安装 Java DB 期间设置的默认位置。如果单独安装了 Java DB,则此位置可能会有所不同。 |
| |
| 在创建数据库之后,如果在 "Services"(服务)窗口中展开 "Databases"(数据库)节点,您可以看到 IDE 已创建数据库连接,并且该数据库已添加到 "Java DB" 节点下的列表中。 |
| |
| |
| == 连接到数据库 |
| |
| 到目前为止,已在 IDE 中成功启动了数据库服务器并创建了一个名为 ``contact`` 的数据库实例。在 IDE 的 "Services"(服务)窗口中,可以对数据库结构执行以下常见任务。 |
| |
| * 创建、删除和修改表 |
| * 用数据填充表 |
| * 查看表格数据 |
| * 执行 SQL 语句和查询 |
| |
| 要开始使用 ``contact`` 数据库,需要创建到该数据库的连接。要连接至 ``contact`` 数据库,请执行以下步骤。 |
| |
| 1. 在 "Services"(服务)窗口中展开 "Databases"(数据库)节点,然后找到新数据库和数据库连接节点。 |
| |
| 数据库连接节点 (image::images/connection-node-icon.png[]) 显示在 "Databases"(数据库)节点下。数据库名称显示在 "Java DB" 节点下。 |
| |
| image::images/services-window.png[] |
| |
| *注:*您还将看到作为默认数据库方案的 `sample [app on APP]` 数据库连接。 |
| |
| [start=2] |
| . 右键单击 *contact* 数据库连接节点 ( ``jdbc:derby://localhost:1527/contact [nbuser on NBUSER]`` ),然后选择 "Connect"(连接)。 |
| |
| "connection node"(连接节点)图标将完全显示出来 (image::images/connection-node-icon.png[]),这表示连接成功。 |
| |
| [start=3] |
| . 为数据库创建适当的显示名称,方法是右键单击数据库连接节点 ( ``jdbc:derby://localhost:1527/contact [nbuser on NBUSER]`` ),然后选择 "Rename"(重命名)。在文本字段中键入 ``Contact DB`` ,然后单击 "OK"(确定)。 |
| |
| |
| == 创建表 |
| |
| 刚创建的 ``contact`` 数据库当前为空。该数据库尚未包含任何表或数据。在 NetBeans IDE 中,可以通过下列任一方法添加数据库表:使用 "Create Table"(创建表)对话框,或输入 SQL 语句并从 SQL 编辑器中直接运行该语句。要了解这两种方法的具体操作步骤,请参见以下部分: |
| |
| * <<createTable,使用 "Create Table"(创建表)对话框>> |
| * <<sqlEditor,使用 SQL 编辑器>> |
| |
| |
| === 使用 "Create Table"(创建表)对话框 |
| |
| 1. 展开 ``Contact DB`` 连接节点,您会看到其中有若干方案子节点。app 方案是适用于本教程的唯一方案。右键单击 APP 节点,然后选择 "Set as Default Schema."(设置为默认方案)。 |
| |
| 2. 展开 APP 节点,请注意,该节点下面有三个子文件夹:"Tables"(表)、"Views"(视图)和 "Procedures"(过程)。右键单击 "Tables"(表)节点,然后选择 "Create Table"(创建表)以打开 "Create Table"(创建表)对话框。 |
| 3. 在 "Table Name"(表名称)文本字段中,键入 ``FRIENDS`` 。 |
| 4. 单击 "Add Column"(添加列)。随即出现 "Add Column"(添加列)对话框。 |
| 5. 在列的 "Name"(名称)中,输入 ``id`` 。对于数据 "Type"(类型),从下拉列表中选择 ``INTEGER`` 。 |
| 6. 在 "Constraints"(约束)下,选中 "Primary Key"(主键)复选框以将此列指定为表的主键。关系数据库中的所有表都必须包含主键。请注意,在选中 "Primary Key"(主键)复选框时,还将会自动选中 "Index"(索引)和 "Unique"(唯一)复选框,而 "Null"(空值)复选框则会取消选中。这是因为主键用于标识数据库中的唯一行,并且默认情况下用作表索引。由于必须标识所有行,因此主键不能包含 ``空`` 值。 |
| image::images/add-column.png[] |
| 7. 接下来,重复执行此过程,以便指定下表中所示的字段: |
| |
| |=== |
| |
| |Key(键) |Index(索引) |Null(空值) |Unique(唯一) |Column Name(列名) |Data Type(数据类型) |Size(大小) |
| |
| |[选中] |[选中] |[选中] |id |INTEGER |0 |
| |
| |[选中] |firstName |VARCHAR |20 |
| |
| |[选中] |lastName |VARCHAR |20 |
| |
| |[选中] |nickName |VARCHAR |30 |
| |
| |[选中] |friendSince |DATE |0 |
| |
| |[选中] |email |VARCHAR |60 |
| |=== |
| |
| 您将创建一个名为 ``FRIENDS`` 的表,其中为每条联系人记录包含以下数据: |
| |
| * *名字* |
| * *姓氏* |
| * *昵称* |
| * *交友开始日期* |
| * *电子邮件地址* |
| |
| image::images/create-table-friends.png[] |
| |
| [start=9] |
| . 在确保 "Create Table"(创建表)对话框包含与上图所示相同的内容后,单击 "OK"(确定)。IDE 会在数据库中生成 ``FRIENDS`` 表,并且您可以看到 "Tables"(表)节点下显示一个新的 ``FRIENDS`` 表节点 (image::images/table-node.png[])。在表节点下将列出从主键 (image::images/primary-key-icon.png[]) 开始的各个列 (字段)。 |
| |
| image::images/friends-table.png[] |
| |
| |
| === 使用 SQL 编辑器: |
| |
| 1. 在 "Service"(服务)窗口中,右键单击 ``Contact DB`` 连接节点或该节点下的 "Tables"(表)节点,然后选择 "Execute Command"(执行命令)。会在 SQL 编辑器的主窗口中打开一个空画布。 |
| 2. 在 SQL 编辑器中输入以下查询。这是将要创建的 COLLEAGUES 表的表定义: |
| |
| [source,sql] |
| ---- |
| |
| CREATE TABLE "COLLEAGUES" ( |
| "ID" INTEGER not null primary key, |
| "FIRSTNAME" VARCHAR(30), |
| "LASTNAME" VARCHAR(30), |
| "TITLE" VARCHAR(10), |
| "DEPARTMENT" VARCHAR(20), |
| "EMAIL" VARCHAR(60) |
| ); |
| ---- |
| |
| *请注:*SQL 编辑器中形成的语句和查询将以结构化查询语言进行解析。SQL 遵循严格的语法规则,在 IDE 的编辑器中工作时应先熟悉一下这些规则。根据不同的数据库管理系统,SQL 语法也会有所不同。有关详细的准则,请参见《link:http://www.oracle.com/technetwork/java/javadb/documentation/index.html[+JavaDB 参考手册+]》。 |
| |
| [start=3] |
| . 单击编辑器顶部任务栏中的 "Run SQL"(运行 SQL)(image::images/run-sql-button.png[]) 按钮(Ctrl-Shift-E 组合键)以执行查询。在 "Output"(输出)窗口(Ctrl-4 组合键)中,将显示一条消息,指示已成功执行该语句。 |
| |
| image::images/run-query.png[] |
| |
| [start=4] |
| . 要验证更改,请在 "Services"(服务)窗口中右键单击 ``Contact DB`` 连接节点,然后选择 "Refresh"(刷新)。此操作会将运行时 UI 组件更新为指定数据库的当前状态。当从 NetBeans IDE 中的 SQL 编辑器运行查询时,必须执行此步骤。您会看到,现在新的 COLLEAGUES 表节点 (image::images/table-node.png[]) 显示在 "Services"(服务)窗口中的 "Tables"(表)下。 |
| |
| |
| == 添加表数据 |
| |
| 现在,您已在 ``contact`` 数据库中创建了一个或多个表,接下来可以开始用数据填充表。您可以使用多种方法向表中添加记录。 |
| |
| * 在 SQL 编辑器中<<sqlstatement,编写 SQL 句>>,为表方案中的每个字段提供值。 |
| * <<usesqleditor,使用 SQL 编辑器>>将记录添加到表中。 |
| * <<using,使用外部 SQL 脚本>>将记录导入到表中。 |
| |
| 阅读下节,了解如何使用用数据填充 ``FRIENDS`` 表的所有方法。 |
| |
| |
| === 运行 SQL 语句 |
| |
| 1. 在 "Services"(服务)窗口中展开 ``Contact DB`` 节点下的 "Tables"(表),右键单击 ``FRIENDS`` 表,然后选择 "Execute Command"(执行命令)以打开 "SQL Editor"(SQL 编辑器)窗口。 |
| 2. 在 SQL 编辑器中,输入以下语句。 |
| |
| [source,sql] |
| ---- |
| |
| INSERT INTO APP.FRIENDS VALUES (1,'Theodore','Bagwell','T-Bag','2004-12-25','tbag@foxriver.com') |
| ---- |
| |
| 键入时可以使用 SQL 编辑器代码完成。 |
| |
| [start=3] |
| . 在 SQL 编辑器中单击鼠标右键,然后选择 "Run Statement"(运行语句)。"Output"(输出)窗口将显示一条消息,指示已成功执行该语句。 |
| . 要验证是否已将新记录添加到 ``FRIENDS`` 表中,请在 "Services"(服务)窗口中右键单击 ``FRIENDS`` 表节点,然后选择 "View Data"(查看数据)。 |
| |
| 选择 "View Data"(查看数据)时,在 SQL 编辑器的上方窗格中自动生成一个查询,用于选择表中的所有数据。在 SQL 编辑器的下方窗格中显示该语句的结果。在这种情况下, ``FRIENDS`` 表将显示在下方窗格中。请注意,已添加了一个新行,其中包含刚通过 SQL 语句提供的数据。 |
| |
| image::images/new-record.png[] |
| |
| |
| === 使用 SQL 编辑器 |
| |
| 1. 右键单击 ``FRIENDS`` 表节点并选择 "View Data"(查看数据)(如果在上一部分的最后一步中没有执行此操作)。 |
| 2. 单击 "Insert Record"(插入记录)( ``Alt-I`` ) 按钮以添加一行。 |
| 即会显示 "Insert Record"(插入记录)对话框。 |
| |
| [start=3] |
| . 单击每个单元并输入记录。注意,对于“日期”数据类型的单元,可以从日历中选择一个日期。完成后单击 "OK"(确定)。 |
| |
| image::images/insert-records.png[] |
| |
| 在 SQL 编辑器中,可以通过单击行表头对结果进行排序、修改和删除现有记录,并查看编辑器中正在执行操作的 SQL 脚本(通过弹出式菜单显示 SQL 脚本命令)。 |
| |
| |
| == 删除表 |
| |
| 在下一步中,将使用外部 SQL 脚本创建一个新的 ``COLLEAGUES`` 表。但是,在上文的<<sqlEditor,使用 SQL 编辑器>>部分中刚创建了一个 ``COLLEAGUES`` 表。要确保 SQL 脚本确实创建一个新表,现在可以删除已创建的 ``COLLEAGUES`` 表。要删除数据库表,请执行以下步骤。 |
| |
| 1. 在“服务”窗口中展开数据库连接节点下的“表”节点。 |
| 2. 右键单击要删除的表,然后选择“删除”。 |
| |
| |
| == 使用外部 SQL 脚本 |
| |
| 从外部 SQL 脚本中发出命令是管理数据库的一种常用方式。您可能已在其他位置创建了 SQL 脚本,并希望将其导入到 NetBeans IDE 中,以对指定的数据库运行该脚本。 |
| |
| 在本练习中,该脚本将创建一个名为 ``COLLEAGUES`` 的新表,并使用数据填充它。执行以下步骤以在 ``contact`` 数据库中运行该脚本。 |
| |
| 1. 将 link:https://netbeans.org/project_downloads/usersguide/colleagues.sql[+colleagues.sql+] 下载到本地系统 |
| 2. 从 IDE 的主菜单中选择 "File"(文件)> "Open"(打开)。在文件浏览器中,导航至 ``colleagues.sql`` 文件的保存位置,然后单击 "Open"(打开)。将自动在 SQL 编辑器中打开该脚本。 |
| |
| 或者,也可以复制 link:https://netbeans.org/project_downloads/usersguide/colleagues.sql[+colleagues.sql+] 的内容,打开 SQL 编辑器,然后将该文件的内容粘贴到 SQL 编辑器。 |
| |
| [start=3] |
| . 确保从编辑器顶部工具栏的 "Connection"(连接)下拉框中选择了连接到 ``Contact DB`` 。 |
| |
| image::images/conn-drop-down.png[] |
| |
| [start=4] |
| . 单击 "SQL Editor"(SQL 编辑器)任务栏中的 "Run SQL"(运行 SQL)(image::images/run-sql-button.png[]) 按钮。将对选定的数据库执行该脚本,并在 "Output"(输出)窗口中生成任何反馈。 |
| . 要验证更改,请在 "Services"(服务)窗口中右键单击 ``Contact DB`` 连接节点,然后选择 "Refresh"(刷新)。请注意,在 "Services"(服务)窗口中的 ``contact`` 下面将显示通过 SQL 脚本创建的新 ``COLLEAGUES`` 表的表节点。 |
| . 要查看新表中包含的数据,请右键单击 ``COLLEAGUES`` 表并选择 "View Data"(查看数据)。通过这种方法,还可以将表格数据与 SQL 脚本中包含的数据进行比较,以查看它们是否匹配。 |
| |
| |
| == 重新创建来自其他数据库的表 |
| |
| 如果您有一个来自其他数据库的表,并希望通过 NetBeans IDE 在所使用的数据库中重新创建该表,IDE 为此提供了非常方便的工具。首先,需要在 IDE 中注册第二个数据库,其过程与本教程开始部分描述的过程类似。就本教程而言,请使用与 Java DB 一起打包的 ``sample`` 数据库。此过程实质上分两部分执行:首先“抓取”选定表的表定义,然后在选择的数据库中重新创建该表,具体操作如下所示: |
| |
| 1. 连接至 ``sample`` 数据库,方法是:在 "Services"(服务)窗口中右键单击 "Databases"(数据库)节点下的连接节点,然后选择 "Connect"(连接)(用户名和口令分别为 ``app`` )。 |
| 2. |
| 展开 ``sample`` 数据库连接下的 "Tables"(表)节点,右键单击 ``CUSTOMER`` 表节点,然后选择 "Grab Structure"(抓取结构)。 |
| |
| image::images/grab-structure.png[] |
| |
| [start=3] |
| . 在打开的 "Grab Table"(抓取表)对话框中,指定计算机上的某一位置,以保存将要创建的抓取文件。单击 "Save"(保存)。 |
| |
| 抓取文件记录选定表的定义。 |
| |
| [start=4] |
| . 展开 ``Contact DB`` 数据库连接下的 "APP schema"(APP 方案)节点,右键单击 "Tables"(表)节点,然后选择 "Recreate Table"(重新创建表)以打开 "Recreate Table"(重新创建表)对话框。 |
| . 在 "Recreate Table"(重新创建表)对话框中,导航到 ``CUSTOMER`` 抓取文件的保存位置,然后单击 "Open"(打开)以便打开 "Name the Table"(命名表)对话框。 |
| |
| image::images/recreate-table.png[] |
| |
| [start=6] |
| . 此时,可以更改表名称或编辑表定义。否则,请单击 "OK"(确定),以在 ``contact`` 数据库中立即创建表。 ``Contact`` DB 连接节点下将显示新的 ``CUSTOMER`` 表节点。 |
| |
| image::images/new-customer-node.png[] |
| |
| 如果查看新 ``CUSTOMER`` 表中的数据,您将会发现数据库中没有任何记录,但该表的结构与抓取的表结构相同。 |
| |
| link:/about/contact_form.html?to=3&subject=Feedback:%20Working%20With%20Java%20DB[+请将您的反馈意见发送给我们+] |
| |
| == 另请参见 |
| |
| 以下内容是对“使用 Java DB (Derby) 数据库”教程的总结。本教程演示了如何在 NetBeans IDE 中设置 Java DB 数据库连接。接着,演示了如何在 IDE 的“服务”窗口中创建、查看、修改和删除表。此外,本教程还演示了如何使用 SQL 编辑器向表中添加数据,以及如何在 IDE 中使用来自其他数据库的定义重新创建表。 |
| |
| 有关更多相关的高级教程,请参见以下资源: |
| |
| * link:mysql.html[+连接 MySQL 数据库+]。演示了如何在 NetBeans IDE 中配置和连接 MySQL 数据库。 |
| * link:../web/mysql-webapp.html[+使用 MySQL 数据库创建简单的 Web 应用程序+]。说明如何创建连接 MySQL 数据库服务器的简单 Web 应用程序。 |
| * link:http://platform.netbeans.org/tutorials/nbm-crud.html[+NetBeans 平台 CRUD 应用程序教程。+]说明如何将 Java DB 数据库集成到 NetBeans 平台应用程序中。 |