如何将一个ResultSet结果集转化为一个Vector?我这样写对不对?

ruolink 2003-09-11 04:39:44
我的代码:
private Vector vt=null;

public void TranslateRs(ResultSet MyRs)
{
Hashtable ht=new Hashtable();
for (int i = 1; i <= MyRs.getMetaData().getColumnCount(); i++)
{
ht.put(MyRs.getMetaData().getColumnName(i),check(MyRs.getString(i)));
}
vt.addElement(ht);
}

private static String check(String checkStr) {
if (checkStr == null) {
return "";
}
else {
return checkStr;
}
}

老是报如下错误:
unreported exception java.sql.SQLException;must be caught or declared to be thrown……
大概就是说我的数据集有问题。请大虾看看,谢了先。
...全文
190 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ruolink 2003-11-10
  • 打赏
  • 举报
回复
谢谢诸位大虾,如楼上所示的代码,是可以实现一个特定数据集的转化,但是我是想实现一个通用的转化,比如转化函数不关心具体有几个字段,都可以转化为一个可以脱离数据集的结构,看来还有些困难。
yaray 2003-10-27
  • 打赏
  • 举报
回复
上面忘记加了(加在while循环体结束之后):
itUserNames = lstUserNames.Iteartor();
itUserRoles = lstUserRoles.Iteartor();
yaray 2003-10-27
  • 打赏
  • 举报
回复
楼主:
上面 ji66(维扬) 和 xsilver(xsilver) 已经说明得很清楚了呀!

比如要取数据库中username 和 userrole 字段的值:
private Iterator itUserNames = null;
private Iterator itUserRoles = null;

private void setValues(){
...;
try{
List lstUserNames = new Arraylist();
List lstUserRoles = new ArrayList();
while(rs.next()){
lstUserNames.add(rs.setString("username"));
lstUserRoles.add(rs.getString("userrole"));
}
} catch (SQLException sqle){
...;
} finally {
try {
rs.close();
...;
} catch (SQLException sqle) {
...;
}
}
}

public Iterator getUserNames(){ return itUserNames; }
public Iterator getUserRoles(){ return itUserRoles ; }
ruolink 2003-10-27
  • 打赏
  • 举报
回复
有没有大虾指点一下啊!
ruolink 2003-10-15
  • 打赏
  • 举报
回复
还是很迷茫。
小弟是一个菜鸟,之所以对这个感兴趣,就是最近遇到的一个问题,我用一个bean来负责执行SQL语句,然后产生一个Resultset,如果直接在Jsp页面接收这个Resultset,在jsp页面处理这个Resultset过程中,连接始终不能释放,直至jsp处理完毕,我才能在finally里面释放,这个是我不想看到的,我希望能达到这样一种效果:jsp页面传递SQL语句给bean执行,执行完毕之后将Resultset转化为一种不依附于connection的对象,然后返回,这样我就可以及时的释放这个connection了,至于jsp页面处理这个结果对象需要多长时间,都不会影响连接池的状况。
希望各位大虾多多说说你们对这个问题的处理,不胜感激!
xsilver 2003-09-11
  • 打赏
  • 举报
回复
你要自己写一个对象来做。比如你要从数据库里取5个字段的数据,有N条。
你要先针对5个子段定义类型,方法然后封装在一个类里。比如上面的aa,这个aa你要自己写
然后取出数据后,先把数据放到aa,然后将aa加入list
ruolink 2003-09-11
  • 打赏
  • 举报
回复
加上try……catch……之后编译通过,说实话,上面的代码也是从前面的帖子里面看到的,还有很多问题不明白,比如:
1、这个过程是不是把resultset按照一列一列的方式转化为Vector的?
2、这样写是不是不用关心resultset具体的列数目以及行数目,都能很好的转化为Vector?
3、如果第一个问题成立,那么怎样才能按照一行一行的转化为Vector?这样对后来从Vector取数据有什么影响?
ji66 2003-09-11
  • 打赏
  • 举报
回复
最好用一个和查询结果表相对应的bean做中介,比如和MyRs对应的aa 用Arraylist比较好
Iterator getRsName(){
List lst =new Arraylist();
while(rs.next()){
aa.name=rs.setString("name");

lst.add(aa);
}
Iterator it=lst.Iteartor();
return it;
}

it就是返回的集合,Iterator比Vector好
while(it.hasNext()){
aa a=(aa)it.next();

}
就可以把a 的内容取出
ruolink 2003-09-11
  • 打赏
  • 举报
回复
在编译的过程中就出现上面的问题,我是做到一个bean里面的,在编译的这个bean的时候出现上面的报错信息的。

谢谢大虾的关注,继续,谢谢!
pqds 2003-09-11
  • 打赏
  • 举报
回复
try
{

Hashtable ht=new Hashtable();
for (int i = 1; i <= MyRs.getMetaData().getColumnCount(); i++)
{
ht.put(MyRs.getMetaData().getColumnName(i),check(MyRs.getString(i)));
}
vt.addElement(ht);
}catch(Exception e)
{
System.out.println(e);
}

说你要捕获异常!
wangwd 2003-09-11
  • 打赏
  • 举报
回复
不是呀,是你没有进行异常的处理
加上try{}catch(SQLException e){}就可以了
不会告诉我你不知道怎么加吧
try
{
for (int i = 1; i <= MyRs.getMetaData().getColumnCount(); i++)
{
ht.put(MyRs.getMetaData().getColumnName(i),check(MyRs.getString(i)));
}
}catch(SQLException e){}

}
wchar 2003-09-11
  • 打赏
  • 举报
回复
要捕捉异常,加try...catch...语句

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧