新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> Oracle, SQL Server与XML,XML在数据挖掘中的应用, PMML.
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - 高级XML应用『 XML 与 数据库 』 → 如何把JDBC返回的ResultSet转化为XML形式(摘自计算机世界) 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 6592 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 如何把JDBC返回的ResultSet转化为XML形式(摘自计算机世界) 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     jinqiuyue 美女呀,离线,快来找我吧!
      
      
      等级:大一新生
      文章:3
      积分:59
      门派:XML.ORG.CN
      注册:2005/3/14

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给jinqiuyue发送一个短消息 把jinqiuyue加入好友 查看jinqiuyue的个人资料 搜索jinqiuyue在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看jinqiuyue的博客楼主
    发贴心情 如何把JDBC返回的ResultSet转化为XML形式(摘自计算机世界)

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

    XMLWriter.Java  
    import java.sql.*;
    import java.io.*;

    public class XMLWriter {
    /**
    * @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 "";
    if (!rs.next()) return "";
    buffer.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); //XML的头部信息
    buffer.append("<ResultSet>\n");
    ResultSetMetaData rsmd = rs.getMetaData(); //得到结果集的定义结构
    int colCount = rsmd.getColumnCount(); //得到列的总数
    for (int id = 0; 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++) {
    int type = rsmd.getColumnType(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, int type) throws SQLException {
    switch (type) {
    case Types.ARRAY:
    case Types.BLOB:
    case Types.CLOB:
    case Types.DISTINCT:
    case Types.LONGVARBINARY:
    case Types.VARBINARY:
    case Types.BINARY:
    case Types.REF:
    case Types.STRUCT:
    return "undefined";
    default: {
    Object value = rs.getObject(colNum);
    if (rs.wasNull() || (value == null))
    return ("null");
    else
    return (value.toString());
    }
    }
    }
    //测试例程
    public static void main (String args [])  
    throws SQLException, IOException
    {  
    String user="odbc";
    String password=null;
    // Load the Mysql JDBC driver
    DriverManager.registerDriver(new org.gjt.mm.mysql.Driver());
    Connection conn =
    DriverManager.getConnection ("jdbc:mysql://localhost/bank");

    System.out.println ("connected.");

    // Create a statement
    Statement stmt = conn.createStatement ();

    // Do the SQL "Hello World" thing
    System.out.println("here is the table rows view");
    ResultSet rset = stmt.executeQuery ("select * from userinfo");
    while (rset.next ()) {
    System.out.println (rset.getString (1)); //W?username
    System.out.println (rset.getString (2)); //W?password
    };
    // call toxml function
    System.out.println("here is the xml output");
    rset.close();
    rset = stmt.executeQuery ("select * from userinfo");  
    String xmlstring =(new Jdbcxml()).generateXML(rset);
    System.out.println(xmlstring);
    rset.close();
    stmt.close();
    conn.close();  

    }

    }

    好大功告成,如果一切顺利,便可以看看我们的执行效果了

    connected.
    here is the table rows view 数据库中的纪录
    ariso

    asdfjuojkhjkasdf9089sd89zxd9f

    estoy

    asdfjuojkhjkasdf9089sd89zxd9f

    estoy

    asdfjuojkhjkasdf9089sd89zxd9f

    ariso

    asdfjuojkhjkasdf9089sd89zxd9f


    here is the xml output 可以看到XML输出效果如下
    <?xml version="1.0" encoding="UTF-8"?>

    <ResultSet>

    <row id="0">

    <col name="username">estoy</col>

    <col name="password">asdfjuojkhjkasdf9089sd89zxd9f</col>

    </row>

    <row id="1">

    <col name="username">estoy</col>

    <col name="password">asdfjuojkhjkasdf9089sd89zxd9f</col>

    </row>

    <row id="2">

    <col name="username">ariso</col>

    <col name="password">asdfjuojkhjkasdf9089sd89zxd9f</col>

    </row>

    </RowSet>


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/3/31 10:30:00
     
     dashu97 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:0
      积分:60
      门派:XML.ORG.CN
      注册:2005/1/28

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给dashu97发送一个短消息 把dashu97加入好友 查看dashu97的个人资料 搜索dashu97在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看dashu97的博客2
    发贴心情 
    不能发点新鲜的吗?
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/4/25 11:39:00
     
     ganlanlv 美女呀,离线,快来找我吧!
      
      
      等级:大一(猛啃高等数学)
      文章:12
      积分:108
      门派:XML.ORG.CN
      注册:2005/3/3

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给ganlanlv发送一个短消息 把ganlanlv加入好友 查看ganlanlv的个人资料 搜索ganlanlv在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看ganlanlv的博客3
    发贴心情 
    谢谢你啊,对于我来说很有帮助的!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/5/20 18:45:00
     
     benben1234 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:8
      积分:72
      门派:XML.ORG.CN
      注册:2005/7/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给benben1234发送一个短消息 把benben1234加入好友 查看benben1234的个人资料 搜索benben1234在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看benben1234的博客4
    发贴心情 
    有用!!谢啦
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/7/15 16:07:00
     
     ym788083love 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:0
      积分:55
      门派:XML.ORG.CN
      注册:2005/7/13

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给ym788083love发送一个短消息 把ym788083love加入好友 查看ym788083love的个人资料 搜索ym788083love在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看ym788083love的博客5
    发贴心情 
    不错,收下!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/7/19 9:26:00
     
     flyfoxs 帅哥哟,离线,有人找我吗?
      
      
      威望:5
      等级:研一(Artificial Intelligence期期不放过)
      文章:550
      积分:3935
      门派:XML.ORG.CN
      注册:2005/1/8

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给flyfoxs发送一个短消息 把flyfoxs加入好友 查看flyfoxs的个人资料 搜索flyfoxs在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看flyfoxs的博客6
    发贴心情 
    很有启发!

    ----------------------------------------------
    存在即是被搜索!

    BLOG =>  http://www.OpenJ.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/7/28 18:28:00
     
     netren7100 美女呀,离线,快来找我吧!
      
      
      等级:大一新生
      文章:1
      积分:62
      门派:XML.ORG.CN
      注册:2005/7/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给netren7100发送一个短消息 把netren7100加入好友 查看netren7100的个人资料 搜索netren7100在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看netren7100的博客7
    发贴心情 
    看看怎样,对我可能有用
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/8/5 14:20:00
     
     thl1978 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:1
      积分:60
      门派:XML.ORG.CN
      注册:2005/6/2

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给thl1978发送一个短消息 把thl1978加入好友 查看thl1978的个人资料 搜索thl1978在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看thl1978的博客8
    发贴心情 
    很好
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/8/12 9:29:00
     
     rainstone 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:0
      积分:55
      门派:XML.ORG.CN
      注册:2005/8/26

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给rainstone发送一个短消息 把rainstone加入好友 查看rainstone的个人资料 搜索rainstone在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看rainstone的博客9
    发贴心情 
    对我有用处!谢谢
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/9/13 17:26:00
     
     wszhe 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:1
      积分:65
      门派:XML.ORG.CN
      注册:2005/9/10

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给wszhe发送一个短消息 把wszhe加入好友 查看wszhe的个人资料 搜索wszhe在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看wszhe的博客10
    发贴心情 
    十分的有用呀,谢谢
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/10/1 11:00:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML 与 数据库 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/17 10:27:09

    本主题贴数10,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    125.000ms