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

来源:互联网 发布:烟花算法程序 编辑:程序博客网 时间:2024/04/30 14:21

传递结果集,思路,将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";}}


0 0