从数据库中读取记录集到平面式XML

从数据库中读取记录集到平面式XML 
  package jing.xml;

  /**
  * <p>Title: 从数据库中读取记录集到平面式XML文件</p>
  * <p>Description: </p>
  * <p>Copyright: Copyright (c) 2004</p>
  * <p>Company: </p>
  * @author 欧朝敬 13873195792
  * @version 1.0
  */

  //将数据库表输出为XML文档
  import org.jdom.*;
  import org.jdom.output.*;
  import Java.sql.*;
  import java.io.*;

  public class databasetoxml {
  public databasetoxml() {
  }

  public static void main(String[] args) throws Exception {
  Class.forName("Oracle.JDBC.driver.OracleDriver").newInstance();
  String url = "jdbc:oracle:thin:@192.168.128.250:1521:sample";
  Connection conn = DriverManager.getConnection(url, "scott", "tiger");
  PreparedStatement pstmt = conn.prepareStatement(
  "select * from company order by cid",
  ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
  ResultSet rs = pstmt.executeQuery();
  Document document = new Document(new Element("ROOT")); //创建文档ROOT元素
  ResultSetMetaData rmd = rs.getMetaData();
  int colcount = rmd.getColumnCount();
  Element elemnetcol = new Element("COLTYPE");
  for (int i = 1; i <= colcount; i++) { //列属性
  elemnetcol.setAttribute(rmd.getColumnName(i),
  rmd.getColumnTypeName(i));
  }
  document.getRootElement().addContent(elemnetcol);

  while (rs.next()) { //不确定表生成XML记录
  Element element0 = new Element("ROW");
  for (int i = 1; i <= colcount; i++) {
  element0.setAttribute(rmd.getColumnName(i),(rs.getString(i)==null?"":rs.getString(i)));
  }
  document.getRootElement().addContent(element0);
  }
  rs.close();
  pstmt.close();
  conn.close();
  XMLOutputter outp = new XMLOutputter(Format.getPrettyFormat()); //格式华输出,产生缩进和换行

  Format format = outp.getFormat();
  format.setEncoding("GB2312"); //设置语言
  format.setExpandEmptyElements(true); //设置输出空元素为<sample></sample>格式
  outp.setFormat(format);

  outp.output(document, new FileOutputStream("company.xml")); //输出XML文档
  System.out.print("XML 文档生成完毕!");
  }
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值