使用JDBC4.0操作XML类型数据

在JDBC4.0推出后,它的从多的特性正在受到广泛地关注。而最重要的更新就是支持XML数据类型(在最新的SQL2003标准中定义了这种数据类型),当然,将XML数据保存在数据库中,并在应用程序中更新XML数据并不是什么新技术。但这是JDBC第一次提供了一个映射接口(java.sql.SQLXML),并利用这个接口来支持SQL/XML数据类型。当然,为了满足处理XML数据类型的需要,其他的接口,如java.sql.Connection和java.sql.ResultSet,也被更新了。

在SQL2003标准和XML数据类型推出之前,开发人员必须将XML数据保存在BLOB、CLOB或TEXT类型字段中。现在,很多主流的数据库(如SQL Server、Oracle和DB2)已经加入了对XML数据类型的支持。但在JDBC4以前,Java应用程序仍然必须将数据库中的XML数据类型转换为JDBC支持的数据类型。但新的JDBC可以通过本地的接口来绑定XML,因此,在处理任何数据库中的XML数据变得更容易和高效。

在本文中将介绍如何用JDBC4.0来操作XML类型的字段(保存和获得XML数据),并给出了一个例子供读者参考。

一、存储和获得XML数据

为了将XML数据保存在一个XML类型的字段中,我们首先应该调用java.sql.Connection.createSQLXML()方法。这个方法返回了一个java.sql.SQLXML的实例。然后我们可以通过调用setOutputStream(), setCharacterStream()或简单地调用setString(String xml)来将XML数据加到SQLXML对象中。要注意的这个功能非常类似于BLOB和CLOB类型的使用。

JDBC4.0的关键特性之一就是我们还可以通过调用java.sql.SQLXML的setResult(Class resultClass)方法来获得一个设置avax.xml.transform.Result的类的实现。这些类包括DOMResult, JAXBResult以及SAXResult。换句话说,我们无需转换就可以简单地做以下事情:

1.得到XML数据

2.建立一个独立的DOMResult对象

3.将DOMResult传入java.sql.SQLXML对象

4.直接通过java.sql.Statement将XML数据保存到响应数据库字段中

为了java.sql.ResultSet获得SQLXML类型数据,我们只需要地调用getSQLXML,并指定相应地字段名或索引即可。然后我们可以通过getBinaryStream(), getCharacterStream()或getString()从java.io.InputStream中获得实际的XML数据,或是一个简单的字符串。保存XML数据也获得XML数据的过程类似,我们还可以通过调用SQLXML对象实例的getSource(Class sourceClass)方法来获得XML源,因此,我们可以从任何实现javax.xml.transform.Source的类访问XML数据。

二、实例程序

由于JDBC4是在2006年12月11日由官方发布的(随J2SE6.0发布),因此,现在很多数据库驱动对JDBC4支持的还不是很好。在本例子中使用了Apache Derby数据库的较版本10.2来讨论对XML类型数据的保存和获取。Derby的这个版本还不持java.sql.SQLXML,这就意味着我们不能直接从结果值中获得XML数据,以及绑定XML数据。但Derby和SQL 2003兼容,可以常非容易地使用嵌入模式,类此,它仍然可以为我们演示如何操作XML数据,就好象在使用一个完全支持JDBC4的驱动一样。用于操作Derby的XML数据的代码如下:

时间: 2024-11-08 19:13:38

使用JDBC4.0操作XML类型数据的相关文章

使用JDBC4.0操作XML类型的字段(保存获取xml数据)的方法_java

在 Java SE 6 所提供的诸多新特性和改进中,值得一提的是为 Java 程序提供数据库访问机制的 JDBC 版本升级到了 4.0, 这个以 JSR-221 为代号的版本 , 提供了更加便利的代码编写机制及柔性 , 并且支持更多的数据类型 . JDBC 4.0 的新特性分为下述四类: 1. 驱动及连接管理 2. 异常处理 3. 数据类型支持 4. API 的变化 以上说这么都不是本文要讲的重点内容,下面给大家介绍jdbc4.0操作xml类型数据的方法,具体详情如下所示: 在JDBC4.0推出

使用JDBC4.0操作Oracle中BLOB类型的数据方法_oracle

在JDBC4.0推出后,它的从多的特性正在受到广泛地关注.下面通过本文给大家介绍JDBC4.0操作Oracle中BLOB类型的数据的方法. 需要的jar包 使用ojdbc6.jar 在/META-INF/MANIFEST.MF里可以看到Specification-Version: 4.0 建表 create sequence seq_blobmodel_id start with 1 increment by 1 nocache; create table blobmodel ( blobid

Effective C#原则8:确保0对于值类型数据是有效的

.Net系统默认所有的对象初始化时都为0.这并没有提供一个方法来预防其他 程序员创建的值类型数据的实例在初始化是都是0.请让你的数据类型默认值也 是0. 一个特殊情况是在枚举类型数据中.决不要创建一个不包括0在内 的枚举类型.所有的枚举类型都是从System.ValueType派生的.枚举类型的值是 从0开始的,但你可以改变这一行为: public enum Planet { // Explicitly assign values. // Default starts at 0 otherwis

Ruby中使用Nokogiri包来操作XML格式数据的教程_ruby专题

安装 对于Ubuntu,需要安装好 libxml2, libxslt 这两个组件: $ apt-get install libxml2 libxslt 然后就可以: $ gem install nokogiri 可选项nokogiri提供了一些解析文件时的可选项,常用的有: NOBLANKS : 删除空节点 NOENT : 替代实体 NOERROR : 隐藏错误报告 STRICT : 精确解析,当解析到文件异常时抛出错误 NONET : 在解析期间禁止任何网络连接. 可选项使用方式举例(通过块调

sql server中使用T-Sql操作Xml数据

一.前言 SQLServer 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和参数.为了更好地支持 XML 模型特征(例如文档顺序和递归结构),XML 值以内部格式存储为大型二进制对象 (BLOB). 用户将一个XML数据存入数据库的时候,可以使用这个XML的字符串,SQL Server会自动的将这个字符串转化为XML类型,并存储到数据库中. 随着SQL Server 对XML字段的支持,相应的,T-S

Sql2005中对XML类型字段的运用

sql2005|xml 在SQL2005中增加了xml类型数据.这样,我们可以将我们应用程序中的实体对象直接保存到数据库中.下次要取的时候就可以直接将XML反序列化成实体对象.对于数据量不是很大的情况下,可以考虑使用. select * from Employee where [content].exist('//Age[text()>9000]')=1 此SQL语句中带有xpath的查询,可以找出employee表中content为XML类型列中子节点>9000的所有记录 看一下,运用. u

JavaScript操作Xml

如果你做Web开发,那就难免要与JavaScript打交道.而JavaScript作为一种浏览器脚本,以其强大的功能及方便的操作,已经赢得了全部浏览器的支持.在前面我介绍了如何使用Sql操作Xml和使用C#操作Xml,这里我就简单的介绍一下使用JavaScript来操作Xml数据.      学习任何知识的最佳途径莫过于实践.这里我们从一个简单的例子出发,来讲解如何使用JavaScript来操作Xml格式数据的.由于我的水平有限,不正确或者不合理的地方还请指正.      1.创建文档.    

利用Visual Basic操作XML数据

visual|xml|数据 什么是XML 扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用. XML与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引.排序.查找.相关一致性等,XML仅仅是展示数据.事实上XML与其他数据表现形式最大的不同是:他极其简单.这是一个看上去有点琐细的优点,但正是

利用VisualBasic操作XML数据

visual|xml|数据 什么是XML 扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用. XML与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引.排序.查找.相关一致性等,XML仅仅是展示数据.事实上XML与其他数据表现形式最大的不同是:他极其简单.这是一个看上去有点琐细的优点,但正是