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

网友投稿 204 2023-07-08


使用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.Ihttp://nputStream中获得实际的XML数据,或是一个简单的字符串。保存XML数据也获得XML数据的过程类似,我们还可以通过调用SQLXML对象实例的getSource(Class sourceClass)方法来获得XML源,因此,我们可以从任何实现javax.xml.transform.Source的类访问XML数据。

二、实例程序

由于JDBC4是在200zfLtwF6年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 =

"

"+

"

"John Smith"+

"

"";

static final String XML2 =

"

"+

"

"Mary Jones

"

"";

static final String XML3 =

"

"+

"

"John Smith"+

"

"";

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类型数据的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,会及时回复大家的。在此也非常感谢大家对我们网站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:深入浅出ES6之let和const命令
下一篇:JavaWeb开发使用Cookie创建
相关文章

 发表评论

暂时没有评论,来抢沙发吧~