如何将一个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……
大概就是说我的数据集有问题。请大虾看看,谢了先。
...全文
192 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...语句

针对2维表数据的分页。不针对各种不同数据库为了提高效力而使用的分页读取。 对各种有可能转化成2维表数据的数据先通过自定义的转化转化成ArrayList(HashMap)或 ArrayList(javabean) 如果类型为ArrayList不需要转化,已经了2个,分别为ResultSetVector,其它特殊类型的转化自己实现SourceConv接口,并在SourceConvFactory中注册(注册没有 在配置文件,自己按需要去完善 :) ) 对第2维的格式化(即列数据),通过实现PageCol接口,已经有javabean和hashmap两种的格式化 import com.miphone.newcard.source.*; import java.util.*; 1.ArrayList source=.......; //不需要转化 2.ResultSet source=.......; //需要在后面添加 tool.setSourceType("ResultSet");已经有一个SourceConv的子类处理 //ResultSet的格式化 3.Vector source=........; //需要在后面添加 tool.setSourceType("Vector");已经有一个SourceConv的子类处理 //Vector的格式化 4.OtherObj source=......; //自己实现SourceConv接口,并在SourceConvFactory中注册,需要在后面添加 tool.setSourceType("名字","class路径及名称"); 5 tool.setSourceColType("列数据类型名");//默认为HashMap,已经有HashMap和javabean的实现,javabean需要 tool.setClassName("javabean类名"); 6 tool.setSourceColType("列数据类型名","类名");//自定义的列数据格式 PageTool tool=new PageTool(); tool.setSource(source); Vector cols=new Vector(); cols.addElement("id"); cols.addElement("name"); cols.addElement("value"); cols.addElement("type"); cols.addElement("note"); tool.setColNams(cols);//设定读取字段 tool.setPageSize(10);//设定pagesize String[] infos = {"", "", "", "", ""}; tool.setPageInfo(infos);//设定分页的显示,默认为{"页次", "首页", "上一页", "下一页", "尾页"}; tool.setHrefName("search.jsp"+args);//分页显示的指向超链接。如 search.jsp?id=1 String thispage=request.getParameter("page"); tool.makeCurrentPage(thispage);//设定当前页,thispage的判断由PageTool自己控制。 tool.Create();//生成分页 //读取 while(tool.next()){ String id=rs.getString("id"); String id2=rs.getString(1);//下标从1开始 String name=rs.getString("name"); String name2=rs.getString(2); } rs.free();//不是必须得,在重复利用时需要用来清空已经有数据的对象。 /* 分页显示方法 */ tool.getFirstPage(); tool.getForwardPage(); tool.getNextPage(); tool.getLastPage(); tool.getTotalInfo(); tool.getRecordCount(); tool.getPageSize();
内容: 1 转换基本数据类型;运算符;计算阶乘; 2 复数类;java的参数传递;自定义形状类;类的加载顺序;方法和变量在继承时的覆盖和隐藏;排序类; 3数字 数字类;格式化数字;转换数字进制;生成随机数; 4数组和合 使用Arrays类;动态调整数组长度;java为数据结构中的列表定义了一个接口类java.util.list同时提供了3个实现类,分别是ArrayList、Vector、LinkedList使用; 生成不重复的随机数序列;列表、合与数组的互相转换;java为数据结构中的映射定义一个接口java.util.Map,有四个实现类HashMap Hashtable LinkedHashMap TreeMap用法和区别;对Map排序; 5字符串 使用String;判断一个字符串是否是合法的java标识符;使用StringBuffer;IP地址转化成整数,整数转化成IP地址; 十八为身份证格式验证;表达式解析器;字符串编码的转换;字符串对齐器;密码加密和验证(MD5); 制作命令行程序;使用正则表达式操作字符串;使用正则表达式验证电话号码的格式; 6java异常处理 throw和throws、try和catch;自定义异常类;使用finally;使用异常的技巧和原则; 7 IO输入输出流 获取文件的基本信息;列出指定目录下的文件,并可过滤文件;创建文件和目录;删除文件和目录;移动文件和目录; 复制文件和目录;一个简单的文件搜索器; 多种方式读文件内容, 按字节读取文件内容、按字符读取文件内容、按行读取文件内容、随机读取文件内容; 多种方式文件内容, 按字节文件内容、按字符文件内容、按行文件内容 ; 添加内容到文件结尾;文件的分割和合并;使用StreamTokenizer统计文件的字符数; 序列化和反序列化对象(将不长用的对象暂时持久化到文件中为对象的序列化,反之用时再把对象恢复到内存为反序列化); 控制对象的序列化和反序列化; 读jar包的资源文件;用zip格式压缩 和解压文件;操作Excel文件;操作Pdf文件;自定义日志文件类; 8线程 线程的启动 和停止;线程的互斥;线程的协作;线程join;生产者、消费者问题;线程的优先级;列出虚拟机中所有的线程;守护线程Daemon;线程池;一个死锁的例子; 定时器Timer:包括在指定时间执行任务,在指定时间之后执行任务以及在某个时间之后每隔时间段重复执行的任务; 9 Java GUI 日历:使用swing和awt实现一个图形化的日历可以查询星期、日期和年份信息(CalenderTrain.java);标准计算器(Callulator.java);更改组建外观,对日历设置几个显示外观(lookandfeel.java);自定义对话框DialogWindows;制作欢迎界面SplashWindow.java; 10 java图形 一个圆形按钮,当单击按钮时颜色发生变化CircleButton.java; 捕捉屏幕相当于键盘上的PrintScreen,CsreenCaputure.java; 缩放图片JPGTransforme.java; 2d图形,实现一个2d画板,能够画2d的线、圆和矩形,能指定图形的颜色并且能够撤销和恢复图形,command.java; 3d图形,Graphic3d.java; 一个时钟程序,能够显示星期和日期,变化背景和透明度Clock.java; 11 java多媒体 滚动的消息,实现一个简单的动画,具有滚动效果的文本消息RollingMessage.java; 三维弹球,BouncingB.java; 贪吃蛇游戏SnakeModel.java; java的声音处理,介绍java中如何处理声音,包括实现响铃,播放wav,au等音频文件,以及控制声音的大小和音量,Beep.java; 媒体播放器,JMFMediaPlayer.java; 12反射 是java程序开发的特征之一,允许java程序对自身进行检查,并能直接操作程序的内部属性; instanceof操作符,instanceof.java; 获取类的信息,ViewClassInfoJrame.java; 动态调用类的方法,CallMetod.java; 13、网络编程 获取URL信息,主要是使用URLConnection类,GetUrlInfo.java; web浏览器,webbrowser.java; 获取IP地址和域名,GetIpAddress.java; Http客户端,httpClient.java; 基本socket编程,介绍socket编程的基本步骤,启动socket服务器后,在打开socket的客户端,在输入框里输入消息发送到服务器,服务器受到消息后返回给客户端; Http服务器,httpsever.java; 一个支持多线程的服务器框架,GeneralServer.java; 代理服务器,ProxyServer.java; telnet客户端,访问系统的telnet服务实质上是与telnet服务建立socket连接,默认的telnet服务的端口是23,TelnetClient.java; UDP编程,包括收发udp报文; 聊天室服务器端,Chatserver.java;聊天室客户端,ChatClient.java; Ftp客户端,Mainframe.java; 14数据库 连接各种数据库DBconnector.java; 获得数据库和表的元数据Getmetadata.java; 查询和更新数据库OperateDatadb.java; 批处理,介绍如何一次执行一批sql语句,这些sql语句用插入、更新和删除等相关操作; 提交和回滚transaction.java; 使用PreparedStatement,动态执行sql语句,UsingPreparedStatement.java; 读二进制数据,BinaryData.java; 读Blob数据,blob数据常以二进制形式存储比较大的文件数据,如图片、视频文件等,本文介绍如何往数据库中读blob数据,BlobData.java; 使用ResultSet更新数据库,UpdateWithResultSet.java; 使用RowSet,.UsingRowSet.java; 调用存储过程,StorageProcedure.java; 一个数据库连接池,JDBCInfo.java; 15 applet java可以编两类程序,applications和applet,applications可以在控制台直接运行,与其他高级编程语言没有太大区别,而java的特色在于它具有编制小应用程序的功能,applet可以在internet上传输并在兼容java的web浏览器中运行的程序; applet时钟,Clock.java; 处理鼠标和键盘,用户在applet上按下键盘时,该实列能把按下的建显示出来,点击鼠标时能把鼠标事件和鼠标坐标显示出来,MouseAndKeyapplet.java; 英文打字小游戏,TypingGame.java; applet间通信; 汉诺塔游戏, 16 j2se5.0 新特性 自动装箱和拆箱; 新的for循环; 枚举类型; 静态导入; 格式化输出; 使用ProcessBuilder执行本地命令; 泛型编程; 监控和管理虚拟机;新的线程执行架构; 线程锁; 线程条件; 线程同步装置:semaphore countdownlatch cyclicbarrier exchanger; 17 java与xml 用dom处理xml文档; 用sax处理xml文档; 用xslt转换xml; 对象与xml的转换; 18 java mail 使用smtp协议发送简单邮件; 发送带附件的邮件; 给多人发送邮件; 使用pop3接收邮件; 19jsp与servlet 获取客户端的真实ip地址; jsp无刷新聊天室; 设置和读取cookie; 上传文件; 用servlet生成图形验证码; 用servlet实现分页查看数据库;
全部代码出自电子工业出版社夏先波的《Java JDK实例宝典》一书,本书以J2SE 5.0为开发环境,选取Java应用的典型实例,循序渐进地介绍了Java语言的各种开发方法和技巧,实例代码注释详细规范,思路清晰。
第1章 Java基础
1.1 转换基本数据类型
1.2 Java的运算符
1.3 控制程序的流程
1.4 计算阶乘
1.5 实现命令行程序
第2章 Java面向对象程序设计
2. 1 复数类
2. 2 equals.chashCode和clone方法
2. 3 Java的参数传递
2. 4 自定义形状类
2. 5 类的加载顺序
2. 6 方法和变量在继承时的覆盖与隐藏
2. 7 排序类
2. 8 Singleton单例模式
2. 9 Factory工厂模式
2. 10 Adapter适配器模式
第3章 数字
3. 1 数字与数字封装类
3. 2 格式化数字
3. 3 数字的舍入
3. 4 转换数字的进制
3. 5 生成随机数
3. 6 处理大数字
第4章 数组与
4. 1 使用Arrays
4. 2 求质数.
4. 3 动态调整数组长度
4. 4 矩阵
4. 5 ArrayList. Vector和LinkedList
4. 6 生成不重复的随机数序列
4. 7 自定义队列
4. 8 对List排序
4. 9 HashSet. LinkedHashSet和TreeSet
4. 10 列表. 合与数组的互相转换
4. 11 HashMap. Hashtable. LinkedHashMap和TreeMap
4. 12 对Map排序
4. 13 Properties属性文件
第5章 字符串
5. 1 使用String
5. 2 基本数据类型与字符串的转化
5. 3 判断Java标识符
5. 4 使用StringBuffer
5. 5 IP地址转化成整数
5. 6 18位身份证格式验证
5. 7 表达式解析器
5. 8 字符串编码的转换
5. 9 字符串对齐器
5. 10 密码加密与验证
5. 11 制作命令行程序
5. 12 使用StringTokenizer
5. 13 使用正则表达式操作字符串
5. 14 使用正则表达式验证电话号码的格式
第6章 Java异常处理
6. 1 throw. throws. try和catch
6. 2 自定义异常类
6. 3 使用finally
6. 4 使用异常的技巧与原则
第7章 IO——输入输出流
7. 1 获取文件的属性信息
7. 2 列出指定目录下的文件
7. 3 创建文件和目录
7. 4 删除文件和目录
7. 5 移动文件和目录
7. 6 复制文件和目录
7. 7 一个简单的文件搜索器
7. 8 读文件
7. 9 文件
7. 10 添加内容到文件尾
7. 11 文件的分割与合并
7. 12 从键盘接收数据并输出到文件
7. 13 使用StreamTokenizer统计文件的字符数
7. 14 序列化和反序列化对象
7. 15 控制对象的序列化和反序列
7. 16 读jar包的资源文件
7. 17 用Zip格式压缩和解压缩文件
7. 18 操作Excel文件
7. 19 操作PDF文件
7. 20 自定义日志文件类
第8章 线程
8. 1 定义和启动线程
8. 2 停止线程
8. 3 线程的互斥
8. 4 线程的协作
8. 5 线程join
8. 6 生产者. 消费者问题
8. 7 线程优先级
8. 8 列出虚拟机中所有的线程
8. 9 守护线程Daemon
8. 10 线程池
8. 11 一个死锁的例子
8. 12 定时器Timer
第9章 Java GUI
9. 1 日历
9. 2 开窗户游戏
9. 3 标准型计算器
9. 4 更改组件的外观
9. 5 自定义对话框
9. 6 制作欢迎画面
9. 7 一个简单的编辑器
9. 8 Swing的Drag和Drop
第10章 Java图形
10. 1 一个圆形的按钮
10. 2 捕捉屏幕
10. 3 缩放图片
10. 4 2D图形
10. 5 3D图形..
10. 6 一个时钟程序
第11章 Java多媒体
11. 1 滚动的消息
11. 2 三维弹球
11. 3 贪吃蛇游戏
11. 4 Java声音处理
11. 5 媒体播放器
第12章 反射
12. 1 instanceof操作符
12. 2 获取类的信息
12. 3 动态调用类的方法
第13章 网络编程
13. 1 获取URL的信息
13. 2 Web浏览器
13. 3 获取IP地址和域名
13. 4 HTTP客户端
13. 5 基本的Socket编程
13. 6 HTTP服务器
13. 7 一个支持多线程的服务器框架
13. 8 代理服务器
13. 9 Telnet客户端
13. 10 UDP编程
13. 11 聊天室服务器端
13. 12 聊天室客户端
13. 13 FTP客户端
第14章 数据库
14. 1 连接各种数据库
14. 2 获得数据库和表的元数据
14. 3 查询和更新数据库
14. 4 批处理
14. 5 提交与回滚事务
14. 6 使用PreparedStatement
14. 7 读二进制数据
14. 8 读Blob数据
14. 9 使用ResultSet更新数据库
14. 10 使用RowSet
14. 11 调用存储过程
14. 12 一个数据库连接池
第15章 Applet
15. 1 Applet时钟
15. 2 处理鼠标和键盘事件
15. 3 英文打字游戏
15. 4 Applet间通信
15. 5 汉诺塔游戏
第16章 J2SE 5. 0新特性
16. 1 自动装箱和拆箱
16. 2 新的for循环
16. 3 枚举类型
16. 4 静态导入
16. 5 可变长参数Varargs
16. 6 格式化输出
16. 7 使用ProcessBuilder执行本地命令
16. 8 泛型编程
16. 9 注释功能Annotation
16. 10 监控与管理虚拟机
16. 11 线程——Callable和Future
16. 12 线程——任务执行架构
16. 13 线程——锁Lock
16. 14 线程——条件Condition
16. 15 线程——Semaphore
16. 16 线程——CountDownLatch
16. 17 线程——Cycli Barrier
16. 18 线程——Exchanger
16. 19 线程——BlockingQueue
第17章 Java与XML
17. 1 用DOM处理XML文档
17. 2 用SAX处理XML文档
17. 3 用XSLT转换XML
17. 4 对象与XML的转换
第18章 Java Mail
18. 1 使用SMTP协议发送简单邮件
18. 2 发送带附件的邮件
18. 3 给多人发送邮件
18. 4 使用POP3接收邮件
第19章 JSP与Servlet
19. 1 获取客户端的真实IP地址
19. 2 设置矛口读取Cookie
19. 3 JSP无刷新聊天室
19. 4 上传文件
19. 5 用Servlet生成图形验证码
19. 6 用Servlet实现分页查看数据库

81,091

社区成员

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

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