动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息

本月文章推荐
.Windows下常见Oracle服务介绍.
.在Oracle数据库中处理数据的高并.
.Oracle中通过命令行实现定时操作.
.bootdisk 磁片可以当作系统急救磁.
.OCIEnvCreate()多线程初始化的模.
.Oracle热备期间的过量Redo生成控.
.Oracle软件升级 增加支持RFID功能.
.下一代数据库发展的四大趋势.
.一个完整的Oracle rman备份恢复参.
.Oracle中压缩数据节省空间和提高.
.如何将 Access 数据导出到 Oracl.
.Oracle9i 数据仓库执行性能增强.
.教你在Windows环境下Kill掉Oracl.
.ORACLE入门之改数据库的归档方式.
.Oracle 10g R2特性之数据仓库和集.
.Oracle的TNS-12502错误原因及解决.
.判断字段中是否包含中文的方法.
.ORA-01502 state unusable错误成.
.解读Oracle 9201的控制文件(一).
.如何安装配置Oracle 9i网络环境二.

Oracle9中XML SQL Utility技术指导(java)

发表日期:2008-2-9 |


 
■    开发前要求配置
■    Select XML格式数据
■    Insert XML格式数据
■    Updata XML格式数据
■    Delete XML格式数据


开发前要求配置
必须安装Oracle客户端
把Classpath指向
classes111.zip
xmlparserv2.jar
xsu111.jar
xsu12.jar

Select XML格式数据
    由于两者之间具有相近的层次结构数据关系,关系数据库模式能XML来模拟。假设一个书目列表的数据库,BookList表设有下述列:BookID、Title、Author 、Publisher、Year、ISBN和描述。下面是应用程序对数据库进行的典型查询:
SELECT Title,Author,Publisher,Year,ISBN FROM BOOKLIST WHERE BOOKID=1234;
若通过Orale XML SQL Utility提交查询,数据库将返回下述结果:
<?xml version=’’1.0’’?>
<ROWSET>
  <ROW id=”1”>
<TITLE>The Difference Between God and Larry Ellison:Inside Oracle
    Corporation</TITLE>
<AUTHOR>Mike Wilson<AUTHOR>
<PUBLTSHER>William Morrow and Co.</PUBLISHER>
<YEAR>1997</YEAR>
<ISBN>0688149251</ISBN>
</ROWSET>
假如应用程序只想简单地把输出写入到文件,可以用字符串形式输出。如

果直接送给Oracle XML解析器用XSLT处理器进行变换,可以用DOM对象形式输出。提供DOM输出可以无需解析操作,否则在应用XSL转换之前需要实施解析操作。
    如下列代码段所示,通过把查询传递给oranle.xml.sql.query.Oracle XML Query类进行查询提交:
import Java . sql . * ;
import java . math . * ;
import Oracle . xml . sql .query . * ;
import oracle . jdbc .* ;
import oracle . jdbc . driver . * ;
public static void main (String args[ ])throws SQLException
{
  string tabName = “Booklist” ;
  string user = “scott/tiger” ;
  DriverManager . registerDriver(new oracle . jdbc .driver .oracleDriver( )) ;
  Connection conn=
DriverManager . getConnection( “jdbc:oracle:oci8”+user+”@”) ;
  OracleXMLQuery qry = new OracleXMLQuery(conn, “select * from+tabName”);
  String xmlstring = qry . getXMLString( ) ;
  System . out .println (“OUTPUT IS :
 “+xmlstring”);
  Conn . close ( ) ;
     
    Oracle XML SQL Utility也提供可选的命令行界面,它用于产生与非凡数据库模式相关的DTD。假定所有的内容都已正确安装,只需要执行如下命令就可得到完整的命令行选列表:

Java oraclexml
   下面的命令行用于怎样创建与正在查询的非凡数据库模式相关的DTD:
java oraclexml getxml ?scott/tiger “scott/tiger”-withDTD “SELECT” *
 
 FROM BookList”
   对于前面所说的BOOKLIST表,在该查询产生的XML文档中Oracle XML SQL Utility会输出如下的DTD:

〈!ELEMENT BOOKLIST (BOOKID, Title, Author, Publisher, Year, ISBN, Description)〉
<!ELEMENT BOOKID (#PCDATA)>
<!ELEMENT Author (#PCDATA)>
<!ELEMENT Publisher (#PCDATA)>
<!ELEMENT Year (#PCDATA)>
<ELEMENT ISBN (#PPCDATA)>
<!ELEMENT Description (#PCDATA)>



Insert XML格式数据
    一旦在数据库中创建了模式,只要XML格式的数据与从模式中产生的DTD相符,XML SQL Utility就会把数据保存到模式中去。XML SQL Utility提供把XML文档映射为表行的能力。该存储使用简单映射将元素标记名映射为列,通过缺省映射,将XML字符串转换为合适的数据类型。当XML元素还有子元素时,则该XML元素被映射为SQL对象类型。
    为了保存XML格式的数据,XML SQL Utility启动一个插入语句,在插入语句的VALUES子句中绑定所有元素值。每个行元素的内容被映射为一个单独值集合。
    返回到本章前面的Booklist范例,下面是存储XML格式的项的SQL语句:
INSERT INTO BOOKLIST (BookID, TITLE, AUTHOR, PUBLISHER, YEAR, ISBN,DESCRIPTION)  VALUS (?,?,?,?,?,?,?) and BIND the values,
BOOKID  - > 1234
TITLE   - > The Difference Between God and Larry Ellison: Inside Oracle Corporation
AUTHOR  - > Mike Wilson
PUBLISHER  - > William Morrow & Co.
YEAR  - > 1997
ISBN  - > 0688149251
Description  - >  Account of Larry Ellison ;
如下范例代码演示了Java程序中是如何完成此功能的:
import oracle.xml.sql.dml.*;
import java.sql.*;
import oracle.jdbc.driver.*;
import oracle.jdbc.*;
import java.net.*;

public class save_sample
{
  public static void main (String args[]) throw SQLException
  {
Srting tabName =”BOOKLIST”; // table into which to insert
String fileName =”samdoc.xml”; // file containing the xml doc
DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
Connection conn =
DriverManager.getConnection(“jdbc:oracle:oci8:scott/tiger@”);
OracleXMLSave sav = new OracleXMLSave(conn,tabName);
URL url = sav.createURL(fileName);
Int rowCount = sav.insertXML(url);
System.out.println(“sUCcessfully inserted “+rowCount+
“rows into “+tabName);
conn.close();
  }
}
    像getXML一样,存储功能也有一个命令行版本,叫做putXML。
它可用于大量加载XML数据。如下的命令将加载一个XML文档,其中该文档中包含有与范例DTD相符合的书目列表。
  Java oraclexml putXML ?user “scott/tiger” sampdoc.xml BookList

Updata XML格式数据
    更新操作可应用于表中的多行,这点和插入操作不同。假如匹配列不是表中的要害字列,则被更新的XML元素也许会匹配多行。所以更新操作需要一个要害字列的列表,其中该实用程序使用该列表来确定要更新的行。下面的书目列表更新例子说明了这种情况:

<ROWSET>
  <ROW num=”1”>
<BOOKID>1234</BOOKID>
<TITLE> The Difference Between God and Larry Ellison: Inside Oracle
       Corporation </TITLE>
<AUTHOR>Mike Wilson</AUTHOR>
<PUBLISHER>William Morrow and Co.</PUBLISHER>
<YEAR>1997</YEAR>
<ISBN>0688149251</ISBN>
  </ROW>
</ROWSET>

该XML更新会执行如下的传递BookID列和要害字列值的SQL语句:
UPDATE BOOKLIST SET TITLE = ? , AUTHOR = ? WHERE BOOKID = ?
   and bind the values,
   BOOKID - >1234
   TITLE - > The Difference Between God and Larry Ellison: Inside
        Oracle Corporation 
AUTHOR - > Mike Wilson;
   
请注重,不需要更新最初XML文档中的所有列。如下的范例代码给出了Java程序是如何完成此功能的:

import oracle.xml.sql.dml.*;
import java.sql.*;
import oracle.jdbc.driver.*;
import oracle.jdbc.*;
public class ListUpdate
{
  public static void main(String argv[]) throws SQLException
  {
String tabName = “BOOKLIST”; // table into which to insert
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection conn =
  DriverManager.getConnection(“jdbc:oracle:oci8:scott/tiger@”);
OracleXMLSave sav = new OracleXMLSave(conn,tabName);
String [] keyColNames=new string[1];
keyColNames[0]=”BOOKID”;
sav.setKeyColumnNames(keyColNames);
sav.updateXML(argv[0]);
sav.close();
  }
}


Delete XML格式数据
  XML SQL Utility也支持XML文档的删除操作。像更新操作一样,删除操作也使用要害字列来确定被删除的行。假如没有给出一个或多个要害字列,删除操作仍将试着匹配文档中的列。下面是XML文档和对应的SQL删除语句:

<ROWSET>
   <ROW num=”1”>
       <BOOKID>1234</BOOKID>
       <TITLE> The Difference Between God and Larry Ellison: Inside Oracle
              Corporation</TITLE>
       <AUTHOR>Mike Wilson</AUTHOR>
       <PUBLISHER>William Morrow and Co. </PUBLISHER>
       <YEAR>1997</YEAR>
       <ISBN>0688149251</ISBN>
</ROW>
</ROWSET>

DELETE FROM BOOKLIST WHRE TITLE = ?
 AND AUTHOR = ? AND PUBLISHER = ? AND YEAR = ? AND ISBN = ? AND BOOKID = ?
   binding,
   BOOKID < - 1234
   TITLE < -The Difference Between God and Larry Ellison : Inside
        Oracle Corporation
   AUTHOR < - Mike Wilson
   PUBLISHER < - William Morrow & Co.
   YEAR < -1997
   ISBN < - 0688149251

下例显示了Java如何实现删除操作,其中用BookID作为要害字列:

import oracle.xml.sql.dml.*;
import java.sql.*;
import oracle.jdbc.driver.*;
import oracle.jdbc.*;

public class ListDelete
{
  public static void main(String argv[]) throws SQLException
  {
     String tabName = “BOOKLIST” ; // table into which to delete data
     DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
     Connection conn =
        DriverManager.getConnection(jdbc:oracle:oci8:scott/tiger@”);
     OracleXMLSave sav = new OracleXMLSave(conn, tabName);
     String [] keyColNames = new String[1];
     keyColNames[0] = “BookID”;
     sav.setKeyColmnNames(keyColNames);
     sav.deleteXML(argv[0]);
     sav.close();
  }
}
上一篇:Oracle9iAS成为领先的J2EE应用服务 人气:416
下一篇:ORACLE数据库备份实用方案 人气:621
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-13 爬爬思特新闻管理系统 v2.0 Beta1
2008-10-13 Pligg v9.9.5 Beta
2008-10-13 广优邮件发送系统 v2.1
2008-10-13 缤纷互动视频交友 v3.1 RC
2008-10-13 MyShop网络商城 build 081005
2008-10-13 Chyrp 超轻量级开源博客引擎 v2.
2008-10-13 162100静态(论坛/文章)系统 v2.4
2008-10-13 金博人才招聘求职网黄金版 v4.2
2008-10-13 愚人笔记 v4.0
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成