怎样把JDBC查询出来的ResultSet 转为 Collection 啊? 晕,当然不能直接转化,只能将里面数据读出来以后存入Collection 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 关注,看怎么转为 Collection 写个循环一条条读出来再加到Collection 肯定要一条条读,不过有一个通用的办法,可以不管结果集的结构就读出数据。用hashmap 存储一条记录的信息, 字段名,字段值。(字段值要为String才好处理,数据中常用的类型有 number,varchar2,date 都是可以转化成字符串的),循环字段名就可以把一条记录读到hashmap中。在用vector存储若干个hashmap,就可以了。 这是我原来写的代码中的一部份public Collection 。。 Vector retVector=new Vector()。。。 while (rs.next()) { //初始化Hash表 Hashtable ht = new Hashtable(); //获得数据 ResultSetMetaData md = rs.getMetaData();//检索此 ResultSet 对象的列的数目、类型和属性. //将ResultSet转化成Hash数据 for(int i=1;i<=md.getColumnCount();i++){//getColumnCount()返回此 ResultSet 对象中的列的数目。 //Str=rs.getString(i); //tmpStr=rs.getString(i); //数据类型转化 fieldValueStr=null; String ColumnName =md.getColumnName(i); switch (md.getColumnType(i)) { case Types.VARCHAR://字符串类型 fieldValueStr = rs.getString(i); break; case Types.DATE://日期类型 java.sql.Date dtmp = rs.getDate(i); fieldValueStr = dtmp.toString(); break; case Types.NUMERIC://浮点数类型 fieldValueStr = rs.getString(i); break; case Types.CLOB://clob CLOB clob = (CLOB)rs.getClob(i); long pos=1; extLog4J.Log4J.debug("clob2:"+clob); if(!(clob==null)) { extLog4J.Log4J.debug("clob:"+clob); try{ fieldValueStr=clob.getSubString(pos,(int)clob.length()); }catch(SQLException Ex){ } } break; default : fieldValueStr = rs.getString(i); break; } if(fieldValueStr==null) { fieldValueStr=""; } //生成Hash数据 ht.put(((String)ColumnName).toUpperCase(),(String)fieldValueStr); } //添加数组 retVector.add(ht); } } catch (SQLException ex) { extLog4J.Log4J.error(ex.getStackTrace()); } return retVector; 连接数据库时,驱动放置的小问题 axis的问题 我程序关掉了 connection还在吗? hebernate的annotation问题:共享主键的@ONETOONE jb9+weblogic7的问题 跪求DAO,泣血再拜! 项目规划中!希望有人支持! EJB问题,帮帮忙 新人求学习方法 maven工程环境搭建问题 JAVA面试题,请大家帮忙! jbuilder调用oracle数据库,求项目开发过程
用hashmap 存储一条记录的信息, 字段名,字段值。(字段值要为String才好处理,数据中常用的类型有 number,varchar2,date 都是可以转化成字符串的),循环字段名就可以把一条记录读到hashmap中。在用vector存储若干个hashmap,就可以了。
public Collection 。。
Vector retVector=new Vector()
。
。
。
while (rs.next()) {
//初始化Hash表
Hashtable ht = new Hashtable();
//获得数据
ResultSetMetaData md = rs.getMetaData();//检索此 ResultSet 对象的列的数目、类型和属性.
//将ResultSet转化成Hash数据
for(int i=1;i<=md.getColumnCount();i++){//getColumnCount()返回此 ResultSet 对象中的列的数目。
//Str=rs.getString(i);
//tmpStr=rs.getString(i);
//数据类型转化
fieldValueStr=null;
String ColumnName =md.getColumnName(i);
switch (md.getColumnType(i))
{
case Types.VARCHAR://字符串类型
fieldValueStr = rs.getString(i);
break;
case Types.DATE://日期类型
java.sql.Date dtmp = rs.getDate(i);
fieldValueStr = dtmp.toString();
break;
case Types.NUMERIC://浮点数类型
fieldValueStr = rs.getString(i);
break;
case Types.CLOB://clob
CLOB clob = (CLOB)rs.getClob(i);
long pos=1;
extLog4J.Log4J.debug("clob2:"+clob);
if(!(clob==null))
{
extLog4J.Log4J.debug("clob:"+clob);
try{
fieldValueStr=clob.getSubString(pos,(int)clob.length());
}catch(SQLException Ex){
}
}
break;
default :
fieldValueStr = rs.getString(i);
break;
}
if(fieldValueStr==null)
{
fieldValueStr="";
}
//生成Hash数据
ht.put(((String)ColumnName).toUpperCase(),(String)fieldValueStr);
}
//添加数组
retVector.add(ht);
}
}
catch (SQLException ex) {
extLog4J.Log4J.error(ex.getStackTrace());
}
return retVector;