当前位置: 移动技术网 > IT编程>开发语言>Java > 使用JDBC4.0操作XML类型的字段(保存获取xml数据)的方法

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

2019年07月22日  | 移动技术网IT编程  | 我要评论

在 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类型数据的方法,希望对大家有所帮助

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网