没有看你的程序代码不过推荐你一般可以这么来使用vector+hashtable 一次返回查询结果resulset.解决方法: 记录集:将一条记录放到一个hashtable里面,然后把它再
添加到vector里面,循环记录下结果集,返回vector
具体见后面的java文件的部分代码(不包扩数据库的连接和关闭)
package zjdx.bean.common;/********************************************
***** Title: hashtable_vector_rs 
***** Description: 数据显示 
***** Copyright: Copyright (c) 2002 
***** Company: DHC 
***** author: wangyl 
***** version: 1.0 
***** 说明:
***** 记录集:一条记录用放到一个hashtable里面,然后把它再
放到vector里面,循环记录下结果集,返回vector*********************************************/import java.io.*;
import java.sql.*;
import java.util.*;
import java.text.*;public class hashtable_vector_rs
{
/*----------------------------------------------------------------*/
/* 函数名称: getMultiRowInfo
/* 功能描述: 返回记录集,放到Hashtable里面
/* 参数: sql 语句,字段个数
/* 返回值: 成功---htable, 失败---null
/*----------------------------------------------------------------*/
public Vector ListResult(String sqlStatement,int num)
{
Vector ListRs=new Vector();try
{
connectDB();
rs=stmt.executeQuery(sqlStatement);
//判断字段数据类型 
//date型 返回 93 
//int型 返回 2,4
//bigint型 返回 3 
//String型 返回 12
//(char 型)返回 1
int t = -1;
rsmd = rs.getMetaData();
int ColumnCount=0;
if(num>0)
ColumnCount = num;
else
ColumnCount = rsmd.getColumnCount();
while(rs.next())

Hashtable htable =new Hashtable();
for (int i = 1; i <= ColumnCount; i++) 
{
t=rsmd.getColumnType(i);
System.out.println("i="+i+",t="+t+"name="+rsmd.getColumnName(i)); 
if(t==12||t==1||t==3)
{
if(rs.getString(i)==null|| rs.getString(i).equals(""))
htable.put(rsmd.getColumnName(i),"");
else
htable.put(rsmd.getColumnName(i),rs.getString(i));
}
else if(t==93)
{
htable.put(rsmd.getColumnName(i),rs.getDate(i).toString());
}
else if(t==2||t==4)
{
htable.put(rsmd.getColumnName(i),Integer.toString(rs.getInt(i)));
}
}
ListRs.add(htable);
}//e
return ListRs; 
}
catch(Exception listError)
{
System.out.println("数据库操作失败!"+listError);
return null;

finally
{
try
{
closeDB();

catch(Exception closeErr)
{
System.out.println("关闭数据库出错:"+closeErr); 
}

}
}

解决方案 »

  1.   

    Patric_DK:
    你这段程序好像不是递归,Vector和hashtable都可以用来存放数据,关键是递归的时候结果集原来的数据怎末不让他丢失
      

  2.   

    你为什么要进行递归呢?
    Patrick_DK(我向西 引北风 晒成一身古铜) 是将每次的结果集全部取出保存。
    结果集重复使用一定会互相覆盖。只有将之取出来保存,或者你就不能用同一个结果集。定义多个结果集。
      

  3.   

    我只是给个想法不能变通一下啊多层Hashtable嵌套不行吗