从 NetBeans IDE 连接到 Oracle 数据库

NetBeans IDE 包括对 Oracle 数据库的内置支持。您可以轻松地从 IDE 建立连接,并开始使用数据库。本教程介绍了如何使用本地安装的 Oracle Database 10g Express Edition (Oracle Database XE),这是一种可免费开发、部署和分发的小型数据库。

本文档说明了如何从 NetBeans IDE 建立到本地安装的 Oracle Database XE 的连接、如何使用 IDE 的内置 SQL 编辑器处理数据库数据,以及如何启用 OCI 8 PHP 扩展以编写连接到 Oracle 数据库的 PHP 代码。

目录

此页上的内容适用于 NetBeans IDE 7.2、7.3、7.4 和 8.0

要学习本教程,您需要具备以下软件和资源。

软件或资源 要求的版本
NetBeans IDE 7.2、7.3、7.4、8.0、Java EE 包
Java 开发工具包 (JDK) 版本 7 或 8
Oracle Database XE 10 g Express Edition
Oracle JDBC 驱动程序 ojdbc6.jar

开始之前

在开始学习本教程之前,请注意以下事项:

  • 本教程介绍了如何连接到本地系统上安装的 Oracle Database XE 实例,但这些步骤也适用于连接到远程实例。如果要连接到本地实例,您需要下载并安装 Oracle Database XE。安装过程非常简单直观,但如果遇到问题,请参见适用于您的平台的《Oracle Database XE 安装指南》。
  • 有两种类型的 Oracle JDBC 驱动程序:OCI 和 JDBC Thin。
    • Oracle 的 JDBC Thin 驱动程序基于 Java,而与平台无关。该独立驱动程序不要求有其他 Oracle 库,并允许直接连接到 Oracle 数据库。本教程使用该驱动程序说明如何连接到 Oracle 数据库。在开始学习本教程之前,您需要下载 ojdbc6.jar 文件并将其保存到您的系统上。

      Windows 用户注意事项:Windows 可能会将下载文件的扩展名从 .jar 更改为 .zip。不过,它仍是 .jar 文件。您可以将该文件重命名为 .jar。

    • Oracle 的 OCI 驱动程序使用 Oracle 的本机客户端库与数据库通信。这些库是作为 Oracle Instant Client 的一部分获取的。虽然大多数情况下使用 Thin 驱动程序就足够了,但也可能需要按照将 OCI JDBC 驱动程序与 NetBeans IDE 一起使用中的步骤使用 OCI 驱动程序。
      使用 OCI 驱动程序的一个很好的例子是,在 PHP 应用程序中使用 Oracle Instant Client 库访问远程 Oracle 数据库。有关如何启用 OCI8 PHP 扩展的信息,请参见本教程中的 OCI 8 PHP 扩展和适用于 PHP 的 NetBeans IDE 部分。
  • 如果从未使用过 Oracle Database XE,则需要获取 Oracle Database XE 使用入门教程

GlassFish 用户警告:默认情况下,用于管理数据库的 Oracle Database XE 主页使用端口 8080。默认情况下,Oracle GlassFish Application Server 也使用端口 8080。如果同时运行这两个程序,则 Oracle Database XE 会阻止浏览器访问 GlassFish(位于 localhost:8080)。在这种情况下,GlassFish 上部署的所有应用程序都返回 404。简单的解决方案是,在运行 GlassFish 时,关闭不需要用到的 Oracle Database XE。如果需要同时运行这两个程序,请更改 Oracle Database XE 使用的默认端口。这比更改 GlassFish 的默认端口要简单。Internet 上提供了很多有关更改 Oracle Database XE 默认端口的指令集,包括 Oracle 论坛中的指令集。

建立到 Oracle 数据库的连接

在本练习中,将测试并建立到数据库的新连接。

  1. 启动 Oracle 数据库。
  2. 打开 "Services"(服务)窗口("Window"(窗口)> "Services"(服务)或按 Ctrl-5 组合键;在 Mac 上按 ⌘-5 组合键)。在 "Services"(服务)窗口中,右键单击 "Databases"(数据库)节点,然后选择 "New Connection"(新建连接)。
    "Databases"(数据库)节点弹出菜单中的 "New Connection"(新建连接)项
  3. 在新建连接向导中,从 "Driver"(驱动程序)下拉列表中选择 "Oracle Thin"。
  4. 单击 "Add"(添加),然后找到以前下载的文件 ojdbc6.jar。单击 "Next"(下一步)。
  5. 在该向导的 "Customize Connection"(定制连接)面板中输入以下值,然后单击 "Next"(下一步)。
    名称
    Driver Name(驱动程序名称) Oracle Thin(带有服务 ID (SID))
    Host(主机) localhost 或 127.0.0.1。
    :对于远程连接,请提供安装了该数据库的计算机的 IP 地址或可解析主机名。
    Port(端口) 1521(默认值)
    Service ID (SID)(服务 ID (SID)) XE(Oracle Database XE 的默认 SID)。
    :如果要连接到远程数据库,请要求数据库管理员为您提供数据库 SID。
    Username(用户名)

    请输入用户名。
    就本教程而言,请输入 system(默认数据库管理员帐户)和安装数据库期间使用的口令。

    Password 输入与选定用户名相对应的口令。
  6. 单击 "Test Connection"(测试连接),以确认 IDE 能否连接到数据库。单击 "Next"(下一步)。

    如果尝试成功,则会在向导中显示 "Connection succeeded"(连接成功)消息。

    已建立连接
  7. 在 "Select Schema"(选择方案)下拉列表中选择 HR。单击 "Finish"(完成)。

    注:您需要解锁 HR 方案,然后才能在 NetBeans 中访问它。解锁 HR 数据库在 Oracle Database XE 使用入门教程中进行了介绍。

此时将在 "Services"(服务)窗口的 "Databases"(数据库)节点下面显示新连接。您可以展开该连接,然后开始浏览数据库对象的结构。
更改连接节点的显示名称:从节点的弹出式菜单中选择 "Properties"(属性),然后单击 "Display Name"(显示名称)属性的省略号按钮。输入 OracleDB 作为显示名称,然后单击 "OK"(确定)。

已建立连接

注:虽然以上步骤说明的是连接到本地数据库实例的情况,连接到远程数据库的步骤也相同。唯一的区别是,输入安装 Oracle 数据库的远程计算机的 IP 地址或主机名,而不是将 localhost 指定为主机名。

处理 Oracle 数据库中的数据

与数据库进行交互的一种常见方法是,在 SQL 编辑器中运行 SQL 命令或使用数据库管理界面。例如,Oracle Database XE 具有基于浏览器的界面,您可以通过该界面管理数据库,管理数据库对象以及处理数据。

虽然可以通过 Oracle 数据库管理界面执行大多数与数据库有关的任务,但在本教程中,我们介绍如何使用 NetBeans IDE 中的 SQL 编辑器执行其中的一些任务。以下练习介绍了如何创建新用户、如何快速重新创建表,以及如何复制表数据。

创建用户

让我们创建一个新数据库用户帐户以处理数据库中的表和数据。要创建新的用户,您必须使用数据库管理员帐户登录。在本示例中,我们使用在安装数据库期间创建的默认 system 帐户。

  1. 在 "Services"(服务)窗口中,右键单击 "OracleDB" 连接节点,然后选择 "Execute Command"(执行命令)。此时将打开 NetBeans IDE 的 SQL 编辑器,您可以在其中输入将发送到数据库的 SQL 命令。
    在 "Services"(服务)窗口中执行命令菜单项
  2. 要创建新用户,请在 "SQL Editor"(SQL 编辑器)窗口中输入以下命令,然后单击工具栏上的 "Run SQL"(运行 SQL)按钮。
    创建用户命令
    create user jim
    identified by mypassword
    default tablespace users
    temporary tablespace temp
    quota unlimited on users;

    该命令可创建新用户 jim,口令为 mypassword。默认表空间为 users,且分配的空间不受限制。

  3. 下一步是为 jim 用户帐户授予在数据库中执行操作的权限。我们需要允许该用户连接到数据库,在用户默认表空间中创建和修改表以及访问 hr 样例数据库中的 Employees 表。

    实际上,数据库管理员可创建定制角色,并微调每个角色的权限。但就本教程而言,我们可以使用预定义的角色,例如 CONNECT。有关角色和权限的详细信息,请参见 Oracle 数据库安全指南

    grant connect to jim;
    grant create table to jim;
    grant select on hr.departments to jim;

创建表

可以使用几种方法通过 NetBeans IDE 在数据库中创建表。例如,您可以运行 SQL 文件(右键单击文件并选择 "Run File"(运行文件)),执行 SQL 命令(右键单击连接节点并选择 "Execute Command"(执行命令))或使用 "Create Table"(创建表)对话框(右键单击 "Tables"(表)节点并选择 "Create Table"(创建表))。在本练习中,将使用一个表的结构重新创建另一个表。

在本示例中,您希望用户 jim 通过 hr 数据库重新创建 Departments 表,以便在其方案中创建该表的副本。在创建该表之前,您需要与服务器断开连接,然后以用户 jim 身份登录。

  1. 在 "Services"(服务)窗口中右键单击 OracleDB 连接节点,然后选择 "Disconnect"(断开连接)。
  2. 右键单击 OracleDB 连接节点,选择 "Connect"(连接),然后以 jim 身份登录。
  3. 展开 "HR" 方案下面的 "Tables"(表)节点,然后确认用户 jim 只能访问 Departments 表。

    在创建用户 jim 后,选择权限仅限于 Departments 表。

    抓取表的结构
  4. 右键单击 Departments 表节点,然后选择 "Grab Structure"(抓取结构)。将 .grab 文件保存到磁盘上。
  5. 展开 JIM 方案,右键单击 Tables(表)节点,然后选择 "Recreate Table"(重新创建表)。
    指向您创建的 .grab 文件。
    在其他用户的方案中重新创建表
  6. 查看用于创建表的 SQL 脚本。单击 "OK"(确定)。
    在其他用户的方案中重新创建表
    单击 "OK"(确定)时,将会创建新的 DEPARTMENTS 表,并在 JIM 方案节点下面显示该表。如果右键单击表节点并选择 "View Data"(查看数据),则会看到该表是空的。

如果要将原始 Departments 表中的数据复制到新表,则既可在表编辑器中手动输入数据,也可针对新表运行 SQL 脚本以填充该表。

要手动输入数据,请执行以下步骤。

  1. 右键单击 JIM 方案下方的 DEPARTMENTS 表,然后选择 "View Data"(查看数据)。
  2. 单击 "View Data"(查看数据)工具栏上的 "Insert Record"(插入记录)图标,以打开 "Insert Record"(插入记录)窗口。
    "Insert Records"(插入记录)图标
  3. 在字段中以键入方式输入数据。单击 "OK"(确定)。

    例如,可以输入从原始 DEPARTMENTS 表中提取的以下值。

    DEPARTMENT_ID 10
    DEPARTMENT_NAME Administration
    MANAGER_ID 200
    LOCATION_ID 1700

要使用 SQL 脚本填充表,请执行以下步骤。

  1. 右键单击 JIM 方案下方的 DEPARTMENTS 表,然后选择 "Execute Command"(执行命令)。
  2. 在 "SQL Command"(SQL 命令)标签中输入脚本。单击工具栏中的 "Run"(运行)按钮。

    以下脚本使用原始表中的数据填充新表的第一行。

    INSERT INTO JIM.DEPARTMENTS (DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID, LOCATION_ID) VALUES (10, 'Administration', 200, 1700);

您可以通过执行以下步骤,获取使用原始表填充新表的 SQL 脚本。

  1. 右键单击 HR 方案下方的 DEPARTMENTS 表,然后选择 "View Data"(查看数据)。
  2. 在 "View Data"(查看数据)窗口中选择所有行,在该表中右键单击,然后从弹出式菜单中选择 "Show SQL Script for INSERT"(显示 INSERT 的 SQL 脚本),以打开包含脚本的 "Show SQL"(显示 SQL)对话框。

    然后,您可以复制该脚本并根据需要进行修改,在您的表中插入数据。

有关使用 SQL 编辑器的详细信息,请参见提示

使用表数据

要使用表数据,可以利用 NetBeans IDE 中的 SQL 编辑器。通过运行 SQL 查询,可以添加、修改和删除数据库结构中保留的数据。

首先,在 jim 方案中创建第二个名为 Locations 的表(仍然使用 jim 的用户帐户登录)。这一次,我们只需要在 IDE 中运行现成的 SQL 文件即可:

  1. 下载 locations.sql 文件并将其保存到计算机上的 USER_HOME 目录中。
  2. 打开 IDE 的 "Favorites"(收藏夹)窗口,然后找到 locations.sql 文件。

    要打开 "Favorites"(收藏夹)窗口,请在主菜单中单击 "Window"(窗口)> "Favorites"(收藏夹)(按 Ctrl-3 组合键)。默认情况下,将在 "Favorites"(收藏夹)窗口中列出 USER_HOME 目录。

  3. 右键单击 locations.sql 文件,然后选择 "Run File"(运行文件)。
    "Insert Records"(插入记录)图标

    注:如果有多个数据库连接注册到 IDE,则 IDE 可能会提示您选择正确的连接。

  4. 在 "Services"(服务)窗口中,右键单击 "Tables"(表)节点,然后在弹出式菜单中选择 "Refresh"(刷新)。

    您可以看到在 JIM 方案中添加了包含数据的 Locations 表。

    添加到 jim 方案的第二个表
  5. 右键单击 Locations 表节点,然后选择 "View Data"(查看数据)以查看表内容。您将看到 Locations 表的内容。
    您可以直接在此视图窗口中插入新记录和修改现有数据。
    查看 "Locations"(位置)表中的所有数据
  6. 接下来,我们运行一个查询以显示以下两个表中的信息:Departments 和 Locations。

    在本示例中,我们使用简单的“自然合并”,因为两个表具有相同的 "location_id" 列,其中保存了相同数据类型的值。这种合并仅选择在匹配 location_id 列中具有相等值的行。

    打开 "SQL Command"(SQL 命令)窗口(右键单击 JIM 方案下面的 Tables(表)节点,然后选择 "Execute Command"(执行命令)),输入以下 SQL 语句,然后单击 "Run SQL"(运行 SQL)图标。

    SELECT DEPARTMENT_NAME, MANAGER_ID, LOCATION_ID, STREET_ADDRESS, POSTAL_CODE, CITY, STATE_PROVINCE 
    FROM departments NATURAL JOIN locations
    ORDER by DEPARTMENT_NAME;

    该 SQL 查询返回 Departments 表中的 location_id 值与 Locations 表中的匹配列值相等的行,并按 Department 名称对结果进行排序。请注意,您无法在此查询结果中直接插入新记录,这与单个表的表示形式不同。

    联接多个位置的数据

    您可以将 SQL 合并查询保存为视图(右键单击 "View"(视图)节点,然后选择 "Create View"(创建视图)),并在以后需要时方便地运行该视图。为此,应为数据库用户授予我们的样例用户所没有的 "Create View"(创建视图)权限。您可以使用 system 帐户登录,为 jim 授予 "Create View"(创建视图)权限(使用以下 SQL 语句:"grant create view to jim;"),然后尝试创建自己的视图。


OCI 8 PHP 扩展和适用于 PHP 的 NetBeans IDE

您可以使用 OCI 8 PHP 扩展和适用于 PHP 的 NetBeans IDE 编写 PHP 代码,以便与 Oracle 数据库通信。使用适用于 PHP 的 NetBeans IDE 和 Oracle 数据库:

  1. 按照 PHP 学习资源的“配置 PHP 开发环境”部分所述,设置 PHP 环境。请注意,NetBeans IDE 仅支持 PHP 5.2 或 5.3。
  2. 在编辑器中打开 php.ini 文件。确保将 extension_dir 属性设置为 PHP 扩展目录。此目录通常为 PHP_HOME/ext。例如,在将 PHP 5.2.9 安装到 C: 根目录时,extension_dir 设置应为 extension_dir="C:\php-5.2.9\ext"
  3. 找到 extension=php_oci8_11g.dll(适用于 Oracle 11g)或 extension=php_oci8.dll(适用于 Oracle 10.2 或 XE)行并取消注释。每次只能启用其中的一个扩展。

    重要说明:如果 php.ini 中没有这些行,请在 extensions 文件夹中查找 OCI 8 扩展文件。如果 extensions 文件夹中没有 OCI 8 扩展文件,请参见在 Linux 和 Windows 中安装 PHP 和 Oracle Instant Client 以了解 OCI 8 的下载和安装信息。

  4. 重新启动 Apache。(Windows 用户应重新启动计算机。)
  5. 运行 phpinfo()。如果成功启用了 OCI 8,则会在 phpinfo() 输出中显示 OCI 8 部分。

有关启用 OCI 8 的详细信息(尤其是将 OCI 8 与远程 Oracle DB 服务器一起使用的信息),请参见在 Linux 和 Windows 中安装 PHP 和 Oracle Instant Client

如果启用了 OCI 8,适用于 PHP 的 NetBeans IDE 将访问该扩展以完成代码并进行调试。

带有 OCI 8 代码完成选项的编辑器窗口

将 OCI JDBC 驱动程序与 NetBeans IDE 一起使用

OCI 驱动程序包是在与 JDBC Thin 驱动程序 (ojdbc6.jar) 相同的 JAR 文件中提供的。选择使用哪个驱动程序取决于以下接口:oracle.jdbc.OracleDriver 用于 Thin 驱动程序;oracle.jdbc.driver.OracleDriver 用于 OCI 驱动程序。要使用 OCI 驱动程序,还必须安装 Oracle Database Instant Client,因为它包含 OCI 驱动程序与数据库进行通信所需的所有库。

从 NetBeans IDE 中使用 Oracle OCI 驱动程序连接到 Oracle 数据库:

  1. 下载适用于您的平台的基本 Oracle Database Instant Client 软件包。按照此页上的安装说明进行操作。
  2. 在 IDE 的 "Services"(服务)窗口中,右键单击 "Databases"(数据库)节点,然后选择 "New Connection"(新建连接)。
  3. 在 "Locate Driver"(查找驱动程序)步骤中,选择 "Oracle OCI",然后单击 "Add"(添加)并指定 ojdbc6.jar 文件。
  4. 在 "Customize Connection"(定制连接)对话框中,提供以下连接详细信息:IP 地址、端口、SID、用户名和口令。
    请注意 OCI 和 Thin 驱动程序的 JDBC URL 的差别。
    带有 OCI 8 代码完成选项的编辑器窗口

疑难解答

下面的疑难解答提示仅介绍了我们遇到的几种异常错误。如果此处没有解答您的问题,请自行搜索或使用“发送有关此教程的反馈意见”链接提供建设性反馈。

  • 您将会看到类似下面的错误:
    Shutting down v3 due to startup exception : No free port within range:
    >> 8080=com.sun.enterprise.v3.services.impl.monitor.MonitorableSelectorHandler@7dedad
    出现这种错误的原因是,GlassFish 应用服务器和 Oracle 数据库均使用端口 8080。如果要同时使用这两个应用程序,您需要更改其中的一个应用程序的默认端口。要重置 Oracle 数据库的默认端口,您可以使用以下命令:
    CONNECT SYSTEM/password
    EXEC DBMS_XDB.SETHTTPPORT(<new port number>);
  • 出现以下错误:
    Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor.
    如果监听程序无法识别连接描述符提供的数据库实例的服务 ID (SID),则会出现这种错误。出现该异常错误有几个原因。例如,如果未启动 Oracle 数据库,则可能会出现该异常(最简单的情况)。SID 不正确或监听程序无法识别 SID。如果使用默认 SID(例如,Oracle Database Express Edition 的默认 SID 为 XE),则不太可能会出现该问题。SID 包含在 tnsnames.ora 文件的 CONNECT DATA 部分(在 Windows 计算机上,该文件位于 %ORACLE_HOME%\network\admin\tnsnames.ora)。
  • 出现以下错误:
    ORA-12705: Cannot access NLS data files or invalid environment specified.

通常,这表示 NLS_LANG 环境变量包含无效的语言、国家/地区或字符集值。如果属于这种情况,则应在操作系统级别禁用无效的 NLS_LANG 设置。对于 Windows,请在 Windows 注册表的 \HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 中重命名 NLS_LANG 子键。对于 Linux/Unix,请运行 "unset NLS_LANG" 命令。


另请参见

有关管理和使用 Oracle 数据库的更多信息,请参见相应的 Oracle 文档。我们在下面简要列出了最常用的文档。

有关如何在 NetBeans IDE 中使用其他数据库的信息,请参见

get support for the NetBeans

Support


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2013, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo