分享
 
 
 

在OracleJDeveloper中创建XSQL查询

王朝oracle·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

PL/SQL 常被用于创建到数据库的连接、生成表、检索结果集和执行更新。来自使用 PL/SQL 的 SQL 查询的结果集当然是一个文本表。随着在 J2EE 应用程序中使用 XML 逐渐增多,许多 J2EE 开发人员现在需要将这种结果表示为 XML 文档,以交换数据。

包含在 Oracle JDeveloper 10g 中的 Oracle XSQL Servlet 工具支持 SQL 查询的处理以及将结果集作为 XML 输出。有可能要求 XML 输出是一种不同的格式或者可能需要修改输出,因此为了这些目的,XSQL Servlet 也支持 XSLT 转换。

XSQL 文件(.xsql 文件)利用 <xsql:query</xsql:query 标记包含 SQL 查询语句。XSQL 还可以通过 <xsql:dml</xsql:dml 标记来创建或更新数据库。XSQL 通过在 XSQL 页面中指定样式表来支持 XSLT 转换。在这篇技术说明中,我们将利用 XSQL 来查询一个包含了目录的示例数据库表。然后我们将通过 XSLT 转换将 XML 输出显示为 HTML 表。

准备安装

使用 XSQL 创建/查询的数据库表在 Oracle 数据库中创建。在这篇教程中使用了 Oracle 数据库 10g 来创建数据库表。

首先,创建和启动 Oracle 数据库的一个例程。然后与数据库连接,并且 SYS 模式(用户名)为 SYSDBA。

CONNECT SYS/<password AS SYSDBA

然后使用下面的 SQL 脚本来创建一个包含了示例 Oracle 目录的数据库表:

CREATE TABLE OracleCatalog(Journal VARCHAR(25), Publisher Varchar(25),

Edition VARCHAR(25), Title Varchar(45), Author Varchar(25));

INSERT INTO OracleCatalog VALUES('Oracle Magazine',

'Oracle Publishing',

'November-December 2003', 'Servlets and JSP Step Up', 'Budi Kurniawan');

INSERT INTO OracleCatalog VALUES('Oracle Magazine',

'Oracle Publishing',

'September-October 2003', 'Parsing XML Efficiently', 'Julie Basu');

我们将在 JDeveloper 10g 生产版中运行示例 XSQL。下载并安装 JDeveloper 10g 生产版;然后创建一个新的项目(如图 1 所示)。

创建数据库连接

XSQL 查询需要一条数据库连接。要在 JDeveloper 中创建数据库连接,请选择连接导航器中的 ConnectionsDatabase 节点(如图 2 所示)。

图 2:导航器中的数据库节点

然后显示连接向导(如图 3 所示)。

图 3:连接向导:类型

在连接向导中指定一个连接名称和连接类型,然后单击 Next 按钮。在显示的下一个框架中,指定一个用户名和口令,然后单击 Next 按钮。

在随后的 Connection 框架中指定一个 JDBC 驱动程序、主机名、JDBC 端口和数据库 SID,然后单击 Next 按钮(如图 4 所示)。

图 4:连接向导:连接

在随后的 Test 框架中,单击 Test Connection 按钮,测试 JDBC 连接(参见图 5)。单击 Finish 按钮,配置数据库连接。

图 5:连接向导:测试

如图 6 所示,您将看到在应用程序导航器中一个连接节点添加到了 ConnectionsDatabase 节点中。

图 6:连接节点

与数据库的连接还可能通过修改 <JDeveloper/jdev/system9.0.5.1.1605/XSQLConfig.xml 文件来创建。<JDeveloper 是安装 JDeveloper 10g 的目录;可能已设定了运行应用服务器的用户拥有对 XSQLConfig.xml 文件的读权限。在 XSQLConfig.xml 中的 <connectiondefs 元素中增加一个 <connection 元素,以指定要创建的连接。利用 SYSTEM 模式创建一条连接。

<connection name="dbConnection"

<usernameSYSTEM</username

<password</password

<dburljdbc:oracle:thin:@<HOST:<PORT:<SID</dburl

<driveroracle.jdbc.driver.OracleDriver</driver

</connection

属性 name 是连接名称

元素 username 是用来登录到数据库中的用户名

元素 password 是用来登录到数据库中的口令

元素 dburl 是数据库的 URL

元素 driver 是用来与数据库连接的 JDBC 驱动程序

<HOST 是 Oracle 10g 生产版的数据库主机

<PORT 是数据库端口

<SID 是数据库 SID

接下来,将 XSQLConfig.xml 拷贝到 JDeveloper 中的项目源代码目录中。我们将使用在 XSQLConfig.xml 文件中配置的连接 dbConnection 来指定 XSQL 页面的 <page 标记中连接属性的值。

XSQL 的 Oracle 10g 版本(Oracle 10g XDK 的一部分)也支持新的利用 J2EE 容器定义的 JDBC 数据源的能力,这从 XSQLConfig.xml 文件中消除了连接定义,并将连接池的管理推迟到了 J2EE 容器中。用于数据库连接的数据源在 XSQL 页面的 <page 标记的 connection 属性中指定。因为 J2EE 容器一般支持为它们的 JDBC 连接定义进行口令加密,因此这种方法在某些情况下甚至可能更安全。(请参阅 Oracle 10g XSQL 版本说明的“使用 Servlet 容器的数据源实施”一节,以获取更多的详细信息。)

在 XSQL 页面中处理 XSQL 查询

现在让我们在 JDeveloper 中创建一个 XSQL 页面 (queryDb.xsql)。要创建一个 XSQL 文件,请选择应用程序导航框架中的项目节点。在下一个框架中,选择 GeneralXML。在列出的项目中选择 XSQL Page。这将生成一个 XSQL 页面(如图 7 所示)。

图 7:XSQL 页面

接下来我们将在 XSQL 页面中添加 <xsql:query</xsql:query 标记,以处理我们的 XSQL 查询。XSQL 查询的应用程序可能需要使用绑定变量(SQL 语句中的变量)。可以使用 URL 参数、会话变量、cookie 值或页面参数的值来设置绑定变量。在我们的例子中我们将使用页面参数来设置 XSQL 查询绑定变量。

使用 <xsql:query 标记中的 bind-params 属性指定的绑定变量用于<xsql:query 标记内部的 SQL 语句。绑定变量在 SQL 语句中用 '?' 表示。绑定参数的值用 <xsql:set-page-params/ 标记指定。在本节和以下章节中,XSQL 查询中使用的数据库表的名称应该加上创建表的模式作为前缀。在本教程中,数据库表 OracleCatalog 在 SYS 模式中创建。在 XSQL 查询的 SQL 语句中用 SYS 作为 OracleCatalog 表的前缀。例如,从 FROM SYS.OracleCatalog 选择 JOURNAL、PUBLISHER、EDITION、TITLE 与 AUTHOR。

<page xmlns:xsql="urn:oracle-xsql" connection="dbConnection"

<xsql:set-page-param name="JOURNAL" value="Oracle Magazine"/

<xsql:set-page-param name="PUBLISHER" value="Oracle Publishing"/

<xsql:query xmlns:xsql="urn:oracle-xsql"

bind-params="JOURNAL

PUBLISHER"

select JOURNAL, PUBLISHER, EDITION,

TITLE, AUTHOR from OracleCatalog WHERE JOURNAL=?AND PUBLISHER=?

</xsql:query

</page

可以从 XSQL 组件板中添加 <xsql:query</xsql:query 标记(如图 8 所示)。

图 8:XSQL 组件板中的查询组件

页面标记中的属性连接指定了用来查询数据库的连接。我们的 XSQL 页面 queryDb.xsql 在图 9 中显示。

图 9:queryDb.xsql XSQL 页面

要运行 queryDb.xsql,右键单击应用程序导航器中的 queryDb.xsql 节点,并选择 Run,如图 10 所示。

图 10:运行 queryDb.xsql

XSQL 查询的结果是一个 XML 文档;XSQL 页面 queryDb.xsql 在默认的浏览器中显示 XSQL 查询的 XML 输出。我们的 XSQL 查询如下所示。

- <page

- <ROWSET

- <ROW num="1"

<JOURNALOracle Magazine</JOURNAL

<PUBLISHEROracle Publishing</PUBLISHER

<EDITIONNovember-December 2003</EDITION

<TITLEServlets and JSP Step Up</Title

<AUTHORBudi Kurniawan</AUTHOR

</ROW

- <ROW num="2"

<JOURNALOracle Magazine</JOURNAL

<PUBLISHEROracle Publishing</PUBLISHER

<EDITIONSeptember-October 2003</EDITION

<TITLEParsing XML Efficiently</Title

<AUTHORJilua Basu</AUTHOR

</ROW

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有