| // |
| // 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. |
| // |
| |
| = 从 NetBeans IDE 连接到 Oracle 数据库 |
| :jbake-type: tutorial |
| :jbake-tags: tutorials |
| :jbake-status: published |
| :icons: font |
| :syntax: true |
| :source-highlighter: pygments |
| :toc: left |
| :toc-title: |
| :description: 从 NetBeans IDE 连接到 Oracle 数据库 - Apache NetBeans |
| :keywords: Apache NetBeans, Tutorials, 从 NetBeans IDE 连接到 Oracle 数据库 |
| |
| NetBeans IDE 包括对 Oracle 数据库的内置支持。您可以轻松地从 IDE 建立连接,并开始使用数据库。本教程介绍了如何使用本地安装的 Oracle Database 10_g_ Express Edition (Oracle Database XE),这是一种可免费开发、部署和分发的小型数据库。 |
| |
| 本文档说明了如何从 NetBeans IDE <<connect,建立到本地安装>>的 Oracle Database XE 的连接、如何使用 IDE 的内置 SQL 编辑器<<createuser,处理数据库数据>>,以及如何<<oci8,启用 OCI 8 PHP 扩展>>以编写连接到 Oracle 数据库的 PHP 代码。 |
| |
| |
| *要学习本教程,您需要具备以下软件和资源。* |
| |
| |=== |
| |软件或资源 |要求的版本 |
| |
| |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 |
| |
| |link:http://www.oracle.com/technetwork/database/express-edition/overview/index.html[+Oracle Database XE+] |10 _g_ Express Edition |
| |
| |link:http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html[+Oracle JDBC 驱动程序+] |link:http://download.oracle.com/otn/utilities_drivers/jdbc/11202/ojdbc6.jar[+ojdbc6.jar+] |
| |=== |
| |
| |
| == 开始之前 |
| |
| 在开始学习本教程之前,请注意以下事项: |
| |
| * 本教程介绍了如何连接到本地系统上安装的 Oracle Database XE 实例,但这些步骤也适用于连接到远程实例。如果要连接到本地实例,您需要link:http://www.oracle.com/technetwork/database/express-edition/overview/index.html[+下载+]并安装 Oracle Database XE。安装过程非常简单直观,但如果遇到问题,请参见适用于您的平台的《link:http://www.oracle.com/pls/xe102/homepage[+Oracle Database XE 安装指南+]》。 |
| * 有两种类型的 Oracle JDBC 驱动程序:OCI 和 JDBC Thin。 |
| * Oracle 的 JDBC Thin 驱动程序基于 Java,而与平台无关。该独立驱动程序不要求有其他 Oracle 库,并允许直接连接到 Oracle 数据库。本教程使用该驱动程序说明如何连接到 Oracle 数据库。在开始学习本教程之前,您需要link:http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html[+下载+] ``ojdbc6.jar`` 文件并将其保存到您的系统上。 |
| |
| *Windows 用户注意事项:*Windows 可能会将下载文件的扩展名从 .jar 更改为 .zip。不过,它仍是 .jar 文件。您可以将该文件重命名为 .jar。 |
| |
| * Oracle 的 OCI 驱动程序使用 Oracle 的本机客户端库与数据库通信。这些库是作为 Oracle Instant Client 的一部分获取的。虽然大多数情况下使用 Thin 驱动程序就足够了,但也可能需要按照<<oci,将 OCI JDBC 驱动程序与 NetBeans IDE 一起使用>>中的步骤使用 OCI 驱动程序。 |
| 使用 OCI 驱动程序的一个很好的例子是,在 PHP 应用程序中使用 Oracle Instant Client 库访问远程 Oracle 数据库。有关如何启用 OCI8 PHP 扩展的信息,请参见本教程中的 <<oci8,OCI 8 PHP 扩展和适用于 PHP 的 NetBeans IDE>> 部分。 |
| * 如果从未使用过 Oracle Database XE,则需要获取 Oracle Database XE link:http://download.oracle.com/docs/cd/B25329_01/doc/admin.102/b25610/toc.htm[+使用入门教程+]。 |
| |
| *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 默认端口的指令集,包括 link:https://forums.oracle.com/forums/thread.jspa?threadID=336855[+Oracle 论坛+]中的指令集。 |
| |
| |
| == 建立到 Oracle 数据库的连接 |
| |
| 在本练习中,将测试并建立到数据库的新连接。 |
| |
| 1. 启动 Oracle 数据库。 |
| 2. 打开 "Services"(服务)窗口("Window"(窗口)> "Services"(服务)或按 Ctrl-5 组合键;在 Mac 上按 ⌘-5 组合键)。在 "Services"(服务)窗口中,右键单击 "Databases"(数据库)节点,然后选择 "New Connection"(新建连接)。 |
| |
| image::images/new-connection.png[] |
| |
| |
| . 在新建连接向导中,从 "Driver"(驱动程序)下拉列表中选择 "Oracle Thin"。 |
| . 单击 "Add"(添加),然后找到以前下载的文件 ``ojdbc6.jar`` 。单击 "Next"(下一步)。 |
| . 在该向导的 "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 |输入与选定用户名相对应的口令。 |
| |=== |
| |
| |
| . 单击 "Test Connection"(测试连接),以确认 IDE 能否连接到数据库。单击 "Next"(下一步)。 |
| |
| 如果尝试成功,则会在向导中显示 "Connection succeeded"(连接成功)消息。 |
| |
| image::images/customize-conn.png[] |
| |
| |
| . 在 "Select Schema"(选择方案)下拉列表中选择 ``HR`` 。单击 "Finish"(完成)。 |
| |
| NOTE: 您需要解锁 HR 方案,然后才能在 NetBeans 中访问它。解锁 HR 数据库在 Oracle Database XE link:http://download.oracle.com/docs/cd/B25329_01/doc/admin.102/b25610/toc.htm[+使用入门教程+]中进行了介绍。 |
| |
| 此时将在 "Services"(服务)窗口的 "Databases"(数据库)节点下面显示新连接。您可以展开该连接,然后开始浏览数据库对象的结构。 |
| 更改连接节点的显示名称:从节点的弹出式菜单中选择 "Properties"(属性),然后单击 "Display Name"(显示名称)属性的省略号按钮。输入 OracleDB 作为显示名称,然后单击 "OK"(确定)。 |
| |
| image::images/connection.png[] |
| |
| NOTE: 虽然以上步骤说明的是连接到本地数据库实例的情况,连接到_远程_数据库的步骤也相同。唯一的区别是,输入安装 Oracle 数据库的远程计算机的 IP 地址或主机名,而不是将 ``localhost`` 指定为主机名。 |
| |
| |
| == 处理 Oracle 数据库中的数据 |
| |
| 与数据库进行交互的一种常见方法是,在 SQL 编辑器中运行 SQL 命令或使用数据库管理界面。例如,Oracle Database XE 具有基于浏览器的界面,您可以通过该界面管理数据库,管理数据库对象以及处理数据。 |
| |
| 虽然可以通过 Oracle 数据库管理界面执行大多数与数据库有关的任务,但在本教程中,我们介绍如何使用 NetBeans IDE 中的 SQL 编辑器执行其中的一些任务。以下练习介绍了如何创建新用户、如何快速重新创建表,以及如何复制表数据。 |
| |
| |
| === 创建用户 |
| |
| 让我们创建一个新数据库用户帐户以处理数据库中的表和数据。要创建新的用户,您必须使用数据库管理员帐户登录。在本示例中,我们使用在安装数据库期间创建的默认 ``system`` 帐户。 |
| |
| 1. 在 "Services"(服务)窗口中,右键单击 "OracleDB" 连接节点,然后选择 "Execute Command"(执行命令)。此时将打开 NetBeans IDE 的 SQL 编辑器,您可以在其中输入将发送到数据库的 SQL 命令。 |
| |
| image::images/execute.png[] |
| |
| |
| . 要创建新用户,请在 "SQL Editor"(SQL 编辑器)窗口中输入以下命令,然后单击工具栏上的 "Run SQL"(运行 SQL)按钮。 |
| |
| image::images/create-user.png[] |
| |
| [source,sql] |
| ---- |
| |
| create user jim identified by mypassword default tablespace users temporary tablespace temp quota unlimited on users; |
| ---- |
| |
| 该命令可创建新用户 ``jim`` ,口令为 ``mypassword`` 。默认表空间为 ``users`` ,且分配的空间不受限制。 |
| |
| |
| . 下一步是为 ``jim`` 用户帐户授予在数据库中执行操作的权限。我们需要允许该用户连接到数据库,在用户默认表空间中创建和修改表以及访问 ``hr`` 样例数据库中的 ``Employees`` 表。 |
| |
| 实际上,数据库管理员可创建定制角色,并微调每个角色的权限。但就本教程而言,我们可以使用预定义的角色,例如 ``CONNECT`` 。有关角色和权限的详细信息,请参见 link:http://download.oracle.com/docs/cd/E11882_01/network.112/e16543/toc.htm[+Oracle 数据库安全指南+]。 |
| |
| |
| [source,sql] |
| ---- |
| grant connect to jim; |
| grant create table to jim; |
| grant select on hr.departments to jim; |
| ---- |
| |
| |
| === Oracle 数据库中的表空间 |
| |
| 表空间是任何 Oracle 数据库的逻辑数据库存储单元。事实上,数据库的所有数据都存储在表空间中。您可以在分配的表空间中创建表。如果未明确为用户指定默认表空间,则默认使用系统表空间(最好避免出现这种情况)。 |
| |
| 有关表空间概念的详细信息,请参见 link:http://www.orafaq.com/wiki/Tablespace[+Oracle 常见问题解答:表空间+] |
| |
| |
| |
| === 创建表 |
| |
| 可以使用几种方法通过 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`` 表。 |
| |
| image::images/hr-view.png[] |
| |
| |
| . 右键单击 ``Departments`` 表节点,然后选择 "Grab Structure"(抓取结构)。将 ``.grab`` 文件保存到磁盘上。 |
| . 展开 ``JIM`` 方案,右键单击 ``Tables`` (表)节点,然后选择 "Recreate Table"(重新创建表)。 |
| 指向您创建的 ``.grab`` 文件。 |
| |
| image::images/recreate.png[] |
| |
| |
| . 查看用于创建表的 SQL 脚本。单击 "OK"(确定)。 |
| |
| image::images/nametable.png[] |
| |
| 单击 "OK"(确定)时,将会创建新的 ``DEPARTMENTS`` 表,并在 ``JIM`` 方案节点下面显示该表。如果右键单击表节点并选择 "View Data"(查看数据),则会看到该表是空的。 |
| |
| 如果要将原始 ``Departments`` 表中的数据复制到新表,则既可在表编辑器中手动输入数据,也可针对新表运行 SQL 脚本以填充该表。 |
| |
| *要手动输入数据,请执行以下步骤。* |
| |
| 1. 右键单击 ``JIM`` 方案下方的 ``DEPARTMENTS`` 表,然后选择 "View Data"(查看数据)。 |
| 2. 单击 "View Data"(查看数据)工具栏上的 "Insert Record"(插入记录)图标,以打开 "Insert Record"(插入记录)窗口。 |
| |
| image::images/insert-rec.png[] |
| |
| |
| . 在字段中以键入方式输入数据。单击 "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"(运行)按钮。 |
| |
| 以下脚本使用原始表中的数据填充新表的第一行。 |
| |
| |
| [source,sql] |
| ---- |
| 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 编辑器的详细信息,请参见<<tips,提示>>。 |
| |
| |
| === 使用表数据 |
| |
| 要使用表数据,可以利用 NetBeans IDE 中的 SQL 编辑器。通过运行 SQL 查询,可以添加、修改和删除数据库结构中保留的数据。 |
| |
| 首先,在 ``jim`` 方案中创建第二个名为 Locations 的表(仍然使用 jim 的用户帐户登录)。这一次,我们只需要在 IDE 中运行现成的 SQL 文件即可: |
| |
| 1. 下载 link:https://netbeans.org/project_downloads/samples/Samples/Java/locations.sql[+locations.sql+] 文件并将其保存到计算机上的 _USER_HOME_ 目录中。 |
| 2. 打开 IDE 的 "Favorites"(收藏夹)窗口,然后找到 ``locations.sql`` 文件。 |
| |
| 要打开 "Favorites"(收藏夹)窗口,请在主菜单中单击 "Window"(窗口)> "Favorites"(收藏夹)(按 Ctrl-3 组合键)。默认情况下,将在 "Favorites"(收藏夹)窗口中列出 _USER_HOME_ 目录。 |
| |
| |
| . 右键单击 ``locations.sql`` 文件,然后选择 "Run File"(运行文件)。 |
| |
| image::images/run-file.png[] |
| |
| NOTE: 如果有多个数据库连接注册到 IDE,则 IDE 可能会提示您选择正确的连接。 |
| |
| |
| . 在 "Services"(服务)窗口中,右键单击 "Tables"(表)节点,然后在弹出式菜单中选择 "Refresh"(刷新)。 |
| |
| 您可以看到在 ``JIM`` 方案中添加了包含数据的 ``Locations`` 表。 |
| |
| image::images/second-table.png[] |
| |
| |
| . 右键单击 Locations 表节点,然后选择 "View Data"(查看数据)以查看表内容。您将看到 Locations 表的内容。 |
| 您可以直接在此视图窗口中插入新记录和修改现有数据。 |
| |
| image::images/view-data1.png[] |
| |
| |
| . 接下来,我们运行一个查询以显示以下两个表中的信息:Departments 和 Locations。 |
| |
| 在本示例中,我们使用简单的“自然合并”,因为两个表具有相同的 "location_id" 列,其中保存了相同数据类型的值。这种合并仅选择在匹配 location_id 列中具有相等值的行。 |
| |
| 打开 "SQL Command"(SQL 命令)窗口(右键单击 ``JIM`` 方案下面的 ``Tables`` (表)节点,然后选择 "Execute Command"(执行命令)),输入以下 SQL 语句,然后单击 "Run SQL"(运行 SQL)图标。 |
| |
| |
| [source,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 名称对结果进行排序。请注意,您无法在此查询结果中直接插入新记录,这与单个表的表示形式不同。 |
| |
| image::images/join.png[] |
| |
| 您可以将 SQL 合并查询保存为视图(右键单击 "View"(视图)节点,然后选择 "Create View"(创建视图)),并在以后需要时方便地运行该视图。为此,应为数据库用户授予我们的样例用户所没有的 "Create View"(创建视图)权限。您可以使用 system 帐户登录,为 ``jim`` 授予 "Create View"(创建视图)权限(使用以下 SQL 语句:"grant create view to jim;"),然后尝试创建自己的视图。 |
| |
| |
| === NetBeans IDE SQL 编辑器使用提示 |
| |
| 如果学习过本教程前面的内容,则您已使用了 NetBeans IDE SQL 编辑器功能。我们在此处列出了几个可能对您有用的其他 NetBeans IDE SQL 编辑器功能。 |
| |
| 1. *数据库表的 GUI 视图*。在 "Services"(服务)窗口中右键单击表节点并选择 "View Data"(查看数据)时,IDE 将显示该表的可视表示形式及其数据(如上图所示)。您还可以在该视图中直接添加、修改和删除表数据。 |
| * 要添加记录,请单击 "Insert Records"(插入记录)image:images/row-add.png[] 图标并在打开的 "Insert Records"(插入记录)窗口中插入新数据。单击 "Show SQL"(显示 SQL)按钮以查看该操作的 SQL 代码。该表将使用新记录自动更新。 |
| * 要修改记录,请在表的 GUI 视图中的任何单元格内直接双击,然后键入新值。在提交更改之前,将使用绿色显示修改的文本。要提交更改,请单击 "Commit Changes"(提交更改)image:images/row-commit.png[] 图标。要取消更改,请单击 "Cancel Edits"(取消编辑)image:images/row-commit.png[] 图标。 |
| * 要删除行,请选择该行并单击 "Delete Selected Records"(删除选定的记录)image:images/row-commit.png[] 图标。 |
| |
| [start=2] |
| . *保留先前的标签*。在 SQL 编辑器工具栏上单击 "Keep Prior Tabs"(保留先前的标签)image:images/keepoldresulttabs.png[] 图标以保留打开以前查询结果的窗口。如果要比较多个查询的结果,这可能很有用。 |
| |
| [start=3] |
| . *SQL 历史记录*(Ctrl-Alt-Shift-H 组合键)。使用 SQL 编辑器工具栏上的 "SQL History"(SQL 历史记录)image:images/sql-history.png[] 图标可查看已为每个数据库连接运行的所有 SQL 语句。从下拉列表中选择该连接,查找所需的 SQL 语句,然后单击 "Insert"(插入)将该语句放在 "SQL Command"(SQL 命令)窗口中。 |
| |
| [start=4] |
| . *连接列表*。如果有多个数据库连接,并需要在 SQL 编辑器中快速切换这几个连接,请使用 "Connections"(连接)下拉列表。 |
| |
| [start=5] |
| . *运行 SQL 语句*。要运行当前 "SQL Command"(SQL 命令)窗口中的完整语句,请单击 "Run SQL"(运行 SQL)image:images/runsql.png[] 图标。如果您希望只运行 SQL 语句的一部分,请在 "SQL Command"(SQL 命令)窗口中将其选中,右键单击所选内容,然后选择 "Run Selection"(运行选择)。在这种情况下,仅执行所选的部分。 |
| |
| |
| |
| == OCI 8 PHP 扩展和适用于 PHP 的 NetBeans IDE |
| |
| 您可以使用 OCI 8 PHP 扩展和适用于 PHP 的 NetBeans IDE 编写 PHP 代码,以便与 Oracle 数据库通信。使用适用于 PHP 的 NetBeans IDE 和 Oracle 数据库: |
| |
| 1. 按照 link:../../trails/php.html[+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 扩展文件,请参见link:http://www.oracle.com/technetwork/articles/technote-php-instant-084410.html[+在 Linux 和 Windows 中安装 PHP 和 Oracle Instant Client+] 以了解 OCI 8 的下载和安装信息。 |
| |
| |
| . 重新启动 Apache。(Windows 用户应重新启动计算机。) |
| . 运行 ``phpinfo()`` 。如果成功启用了 OCI 8,则会在 ``phpinfo()`` 输出中显示 OCI 8 部分。 |
| |
| 有关启用 OCI 8 的详细信息(尤其是将 OCI 8 与远程 Oracle DB 服务器一起使用的信息),请参见link:http://www.oracle.com/technetwork/articles/technote-php-instant-084410.html[+在 Linux 和 Windows 中安装 PHP 和 Oracle Instant Client+]。 |
| |
| 如果启用了 OCI 8,适用于 PHP 的 NetBeans IDE 将访问该扩展以完成代码并进行调试。 |
| |
| image::images/oci-cc.png[] |
| |
| |
| == 将 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. link:http://www.oracle.com/technetwork/database/features/instant-client/index-100365.html[+下载+]适用于您的平台的基本 Oracle Database Instant Client 软件包。按照link:http://www.oracle.com/technetwork/database/features/instant-client/index-100365.html[+此页+]上的安装说明进行操作。 |
| 2. 在 IDE 的 "Services"(服务)窗口中,右键单击 "Databases"(数据库)节点,然后选择 "New Connection"(新建连接)。 |
| 3. 在 "Locate Driver"(查找驱动程序)步骤中,选择 "Oracle OCI",然后单击 "Add"(添加)并指定 ``ojdbc6.jar`` 文件。 |
| 4. 在 "Customize Connection"(定制连接)对话框中,提供以下连接详细信息:IP 地址、端口、SID、用户名和口令。 |
| 请注意 OCI 和 Thin 驱动程序的 JDBC URL 的差别。 |
| |
| image::images/oci-connection.png[] |
| |
| |
| == 疑难解答 |
| |
| 下面的疑难解答提示仅介绍了我们遇到的几种异常错误。如果此处没有解答您的问题,请自行搜索或使用“发送有关此教程的反馈意见”链接提供建设性反馈。 |
| |
| * 您将会看到类似下面的错误: |
| |
| [source,bash] |
| ---- |
| |
| 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 数据库的默认端口,您可以使用以下命令: |
| |
| [source,bash] |
| ---- |
| |
| CONNECT SYSTEM/passwordEXEC DBMS_XDB.SETHTTPPORT(<new port number>); |
| ---- |
| * 出现以下错误: |
| |
| [source,bash] |
| ---- |
| |
| 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`` )。 |
| * 出现以下错误: |
| |
| [source,bash] |
| ---- |
| |
| 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" 命令。 |
| |
| link:/about/contact_form.html?to=3&subject=Feedback:%20Connecting%20to%20Oracle%20Database%20from%20NetBeans%20IDE[+请将您的反馈意见发送给我们+] |
| |
| |
| |
| == 另请参见 |
| |
| 有关管理和使用 Oracle 数据库的更多信息,请参见相应的 Oracle 文档。我们在下面简要列出了最常用的文档。 |
| |
| * link:http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/toc.htm[+Oracle 数据库 SQL 参考+]。完整介绍用于处理 Oracle 数据库中信息的 SQL 语句。 |
| * link:http://download.oracle.com/docs/cd/E11882_01/network.112/e16543/toc.htm[+Oracle 数据库安全指南+]。提供并解释在管理 Oracle 数据库时使用的主要概念。 |
| * link:http://st-curriculum.oracle.com/tutorial/DBXETutorial/index.htm[+Oracle Database 10_g_ Express Edition 教程+]。快速而详细地介绍了如何使用 Oracle Database XE。 |
| * link:http://www.oracle.com/technetwork/articles/technote-php-instant-084410.html[+在 Linux 和 Windows 中安装 PHP 和 Oracle Instant Client+]。有关安装 PHP 和 Oracle Instant Client 的直观操作方法文章。 |
| |
| 有关如何在 NetBeans IDE 中使用其他数据库的信息,请参见 |
| |
| * link:java-db.html[+使用 Java DB (Derby) 数据库+] |
| * link:mysql.html[+连接 MySQL 数据库+] |
| * link:../web/mysql-webapp.html[+使用 MySQL 数据库创建简单的 Web 应用程序+] |