欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-13 20:58:58
在 java se 6 所提供的诸多新特性和改进中,值得一提的是为 java 程序提供数据库访问机制的 jdbc 版本升级到了 4.0, 这个以 jsr-221 为代号的版...

在 java se 6 所提供的诸多新特性和改进中,值得一提的是为 java 程序提供数据库访问机制的 jdbc 版本升级到了 4.0, 这个以 jsr-221 为代号的版本 , 提供了更加便利的代码编写机制及柔性 , 并且支持更多的数据类型 .

jdbc 4.0 的新特性分为下述四类:

1. 驱动及连接管理

2. 异常处理

3. 数据类型支持

4. api 的变化

以上说这么都不是本文要讲的重点内容,下面给大家介绍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数据的代码如下:

import java.io.stringreader;
import java.sql.*;
public class xmldbtester
{
static final string xml1 =
"<article>"+
"<title>first article</title>"+
"<author>john smith</author>"+
"<body>a very short article.</body>"+
"</article>";
static final string xml2 =
"<article>"+
"<title>second article</title>"+
"<author>mary jones</author>"+
"<body>another short article.</body>"+
"</article>";
static final string xml3 =
"<article>"+
"<title>third article</title>"+
"<author>john smith</author>"+
"<body>last short article.</body>"+
"</article>";
static final string[] articles = {xml1, xml2, xml3};
public static void main(string s[])
{
xmldbtester xdt = new xmldbtester();
connection c = xdt.getconnection();
xdt.loaddemodata(c);
xdt.demoxmlresult(c);

以上所述是小编给大家介绍的使用jdbc4.0操作xml类型数据的方法,希望对大家有所帮助