操作数据库的WebService,传递ResultSet的方法

传递结果集,思路,将ResultSet转成XMl的方式(String),来进行传递。这样就可以将ResultSet里的信息传递给客户端。尝试过序列化,失败。如果谁有其他更好的方式传递,欢迎分享。

1.ResultSet转XML代码

package service.helper;

	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 static String generateXML(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 static String getValue( 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";
	}


	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值