使用JDBC4.0操作XML类型的字段(保存获取xml数据)的方法
在 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类型数据的方法,希望对大家有所帮助
上一篇: .Net下RabbitMQ消息队列的使用