`
Goro
  • 浏览: 170772 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ResultSet转换成XML (转)

    博客分类:
  • Java
阅读更多
众所周知XML已经成不同应用程序之间数据交换的事实上的标准。在实际工作中,我们经常需要把JDBC返回的结果集(ResultSet)转化为XML表达形式,便于把数据传送到其他的应用程序。这里提供一个简单的例子,它可以把ResultSet转化为XML格式的文本,并存放在字符串(String)作为返回结果。
这个程序通用之处在于它与选用的数据库结构无关。就是说,如果数据库结构发生了变化,本文提供的程序也可以正确运行。如果你有相同的需要,希望本文能给您一点帮助和启发。


import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

public class ResultSetToXML {

/**
* @param ResultSet
*            rs输入的结果集
* @return String 返回XML串
* @exception SQLException
*/
public String generateXML(final ResultSet rs) throws SQLException {
   final StringBuffer buffer = new StringBuffer(1024 * 4);
   if (rs == null)
    return "";

   buffer.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\n"); // XML的头部信息
   buffer.append("<ResultSet>\n");

   ResultSetMetaData rsmd = rs.getMetaData(); // 得到结果集的定义结构
   int colCount = rsmd.getColumnCount(); // 得到列的总数

   // 对放回的全部数据逐一处理
   for (int id = 1; rs.next(); id++) {
    // 格式为row id , col name, col context
    buffer.append("\t<row id=\"").append(id).append("\">\n");
    for (int i = 1; i <= colCount; i++) {
     String type = rsmd.getColumnTypeName(i); // 获取字段类型
     buffer.append("\t\t<col name=\"" + rsmd.getColumnName(i)
       + "\">");
     buffer.append(getValue(rs, i, type));
     buffer.append("</col>\n");
    }
    buffer.append("\t</row>\n");
   }
   buffer.append("</RowSet>");
   rs.close();
   return buffer.toString();
}

/**
* This method gets the value of the specified column
* 通用的读取结果集某一列的值并转化为String表达
* 
* @param ResultSet
*            rs 输入的纪录集
* @param int
*            colNum 第几列
* @param int
*            type 数据类型
*/
private String getValue(final ResultSet rs, int colNum, String type)
    throws SQLException {
   Object value = null;

   if (type.equals("nchar") || type.equals("nvarchar"))
    value = rs.getString(colNum);
   else
    value = rs.getObject(colNum);

   if (value != null)
    return value.toString().trim();
   return "null";
}

public static void main(String args[]) {
   ResultSet result;
   try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection con = DriverManager.getConnection("jdbc:odbc:MyDataSource", "sa", "123456");

    // 普通查询
    Statement stat = con.createStatement();
    result = stat.executeQuery("Select * from Orders");

    JDBCToXML obj = new JDBCToXML();
    String res = obj.generateXML(result);

    FileOutputStream fswriter = new FileOutputStream("result.xml", true);
    fswriter.write(res.getBytes());

    fswriter.close();
    con.close();
   } catch (Exception e) {
    System.out.println("Error" + e);
   }
}

}


分享到:
评论
1 楼 谁说我不是会员 2012-11-23  
我很想知道JDBCToXML是从哪里来的?是自己写的一个类吗?

相关推荐

    asp.net提供XML与dataset互相转换

    在asp.net中提供了数据集DateSet与Xml转换的类 XmlDatasetConvert code: XmlDatasetConvert 该类提供了四种方法: 1、将xml对象内容字符串转换为DataSet 2、将xml文件转换为DataSet 3、将DataSet转换为...

    ResultSet to XML Converter-开源

    此代码实用程序会将任意数量的结果集转换为单个 xml 文件。 执行的主要方法是 XMLWriter.writeXML。

    ranjan-开源

    ranjan 是用 Java 编写的用于数据库的 XML(SAX 和 DOM)API。 ranjan 将 java ResultSet 转换为 XML。 Ranjan 还可以在给定 SQL 语句(以及到数据库的 java.sql.Connection)的情况下以 XML 格式返回结果。 冉冉沃

    40道MyBatis面试题带答案(很全)

    对查询SQL执行后返回的ResultSet对象,Mybatis会帮我们处理,转换成Java对象。 此外,MyBatis还支持自定义SQL、存储过程以及高级映射,免除了大部分的JDBC代码以及设置参数和获取结果集的工作。

    Java数据库编程宝典2

    15.2.3 使用XSL样式表转换XML 15.2.4 在JSP页面中使用XSL转换 15.3 使用具有XSL样式表的可更新ResultSet 15.4 小结 第16章 使用JDBC驱动的JavaMail API 16.1 使用电子邮件协议 16.1.1 MIME协议 16.1.2 ...

    Java数据库编程宝典4

    15.2.3 使用XSL样式表转换XML 15.2.4 在JSP页面中使用XSL转换 15.3 使用具有XSL样式表的可更新ResultSet 15.4 小结 第16章 使用JDBC驱动的JavaMail API 16.1 使用电子邮件协议 16.1.1 MIME协议 16.1.2 ...

    Java数据库编程宝典1

    15.2.3 使用XSL样式表转换XML 15.2.4 在JSP页面中使用XSL转换 15.3 使用具有XSL样式表的可更新ResultSet 15.4 小结 第16章 使用JDBC驱动的JavaMail API 16.1 使用电子邮件协议 16.1.1 MIME协议 16.1.2 ...

    Java数据库编程宝典3

    15.2.3 使用XSL样式表转换XML 15.2.4 在JSP页面中使用XSL转换 15.3 使用具有XSL样式表的可更新ResultSet 15.4 小结 第16章 使用JDBC驱动的JavaMail API 16.1 使用电子邮件协议 16.1.1 MIME协议 16.1.2 ...

    xmljava系统源码-memory:超轻量级Java持久化工具:比dbutils更小巧、好用的的持久化工具,支持Oracle&MYSQL

    xml java系统源码 清瘦的记录者: 一个比dbutils更小巧、好用的的持久化工具 1. 概述 1.1 连接、语句和结果集  从上看,其对数据访问层有相当简洁的抽象:1、连接... 获取结果集,就是把ResultSet转换为目标数

    java jdk实列宝典 光盘源代码

    IP地址转化成整数,整数转化成IP地址; 十八为身份证格式验证;表达式解析器;字符串编码的转换;字符串对齐器;密码加密和验证(MD5); 制作命令行程序;使用正则表达式操作字符串;使用正则表达式验证电话号码的...

    springmybatis

    MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个...

    删掉,复制别人东西,怕侵权,原本只想收藏的

    4,使用ResultSet读取数据,然后通过代码转化为具体的POJO对象 5,关闭数据库相关的资源 jdbc的缺点: 一:工作量比较大,需要连接,然后处理jdbc底层事务,处理数据类型,还需要操作Connection,Statement对象...

    Java基于SSM(Spring+SpringMVC+MyBatis)家政预约管理系统.zip

    也就是说,可以将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型。内存中的数据模型可以是任意数据结构或对象模型,存储数据的类型可以是XML,二进制流,关系模型等 ORM:在持久化对象上...

    Java基于SSM(Spring+SpringMVC+MyBatis)数据结构课堂考勤管理系统.zip

    也就是说,可以将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型。内存中的数据模型可以是任意数据结构或对象模型,存储数据的类型可以是XML,二进制流,关系模型等 ORM:在持久化对象上...

    Java基于SSM(Spring+SpringMVC+MyBatis)大学生奖助学金发放管理系统.zip

    也就是说,可以将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型。内存中的数据模型可以是任意数据结构或对象模型,存储数据的类型可以是XML,二进制流,关系模型等 ORM:在持久化对象上...

    Java基于SSM(Spring+SpringMVC+MyBatis)新疆旅游管理系统.zip

    也就是说,可以将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型。内存中的数据模型可以是任意数据结构或对象模型,存储数据的类型可以是XML,二进制流,关系模型等 ORM:在持久化对象上...

    Java基于SSM(Spring+SpringMVC+MyBatis)大美新疆在线论坛交流系统.zip

    也就是说,可以将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型。内存中的数据模型可以是任意数据结构或对象模型,存储数据的类型可以是XML,二进制流,关系模型等 ORM:在持久化对象上...

    Java基于SSM(Spring+SpringMVC+MyBatis)个人健康信息管理系统.zip

    也就是说,可以将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型。内存中的数据模型可以是任意数据结构或对象模型,存储数据的类型可以是XML,二进制流,关系模型等 ORM:在持久化对象上...

    Java基于SSM(Spring+SpringMVC+MyBatis)在线汽车交易系统.zip

    也就是说,可以将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型。内存中的数据模型可以是任意数据结构或对象模型,存储数据的类型可以是XML,二进制流,关系模型等 ORM:在持久化对象上...

    Java基于SSM(Spring+SpringMVC+MyBatis)在线物业管理系统.zip

    也就是说,可以将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型。内存中的数据模型可以是任意数据结构或对象模型,存储数据的类型可以是XML,二进制流,关系模型等 ORM:在持久化对象上...

Global site tag (gtag.js) - Google Analytics