CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

ResultSet的方法总是出错,大家帮忙看看!

楼主lyqq(曾经是菜,现在还是菜!)2003-12-01 13:53:47 在 Java / Web 开发 提问

分数不多了,只好省省了!  
   
  在Bean中,正常的按照顺序查询都没有问题,可是我打算首先计算记录数目,然后分配String数组的空间,可是每次我使用   ResultSet中的方法   .last(),.islast(),first(),isfirst()……这种的方法时,程序都自动跳过后面的语句,同时这个语句也不执行,然后就返回了!  
  不知道什么原因!  
   
  希望大家集思广益,看看都有什么可能!有意者有分!  
   
   
  部分主要源代码如下:  
   
  package   myclass.util;  
   
  import   java.sql.*;  
  import   myclass.DB.DataBase;       //我的数据库连接Bean  
   
  public   class   TransUtil   extends   DataBase  
  {  
          private   Statement   stmtTrans   =   null;  
          private   ResultSet   rsTrans   =   null;  
         
  public   TransUtil()  
          {  
  try  
  {  
          stmtTrans   =   conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,  
            ResultSet.CONCUR_READ_ONLY);  
  }  
  catch   (Exception   ex)  
  {  
          ex.toString();  
  }  
   
          }  
   
          public   String[]   toid(String   bm)   throws   Exception  
          {  
   
  String[]   ids   =   null;  
  try  
  {  
          setSql("select   *   from   imple_scheme_curr   where   bm='50018'");  
          rsTrans   =   stmt.executeQuery(getSql());  
  rsTrans.last();                           //这句话就不执行了,直接跳到return   ids;那句了????  
          int   l   =   rsTrans.getRow();  
          int   i   =   0;  
          ids   =   new   String[l   *   2];  
          rsTrans.first();  
          while   (rsTrans.next())  
          {  
  ids[i]   =   rsTrans.getString("id");  
  ids[i   +   l]   =   rsTrans.getString("bm");  
  i++;  
          }  
          System.out.println("总数:"   +   l);  
  }  
  catch   (Exception   ex)  
  {  
          ex.toString();  
  }  
  finally  
  {  
          rsTrans.close();  
   
  }  
  System.out.println("Function   toid   is   over");  
   
  return   ids;  
   
          }  
   
  } 问题点数:32、回复次数:17Top

1 楼cen8535(小虫)回复于 2003-12-01 13:59:07 得分 2

如果是通过odbc连数据库的话,结果集只能顺序移动Top

2 楼lyqq(曾经是菜,现在还是菜!)回复于 2003-12-01 14:34:25 得分 0

我用的是   SQL   Server   2000   的数据库,JDBC的专用驱动!  
  应该可以随机访问!Top

3 楼lyqq(曾经是菜,现在还是菜!)回复于 2003-12-01 14:39:09 得分 0

谢谢!Top

4 楼lyqq(曾经是菜,现在还是菜!)回复于 2003-12-01 14:47:44 得分 0

是不是分太少啊!!  
   
  在线等呢!!Top

5 楼helloqiner(小勤)回复于 2003-12-01 15:13:55 得分 1

connect   正常吗?  
  stmt   正常吗?  
  返回的数据集是空吗?  
   
  如果是返回的数据集本身就有问题,我看问题不是出在   rsTrans.last()   这句上,而是只要是操作数据集的语句都不会被执行。你可以将这句话注释掉,随遍加句话与数据库操作无关的代码,单步跟踪看看能不能运行到你新加的语句上。  
  Top

6 楼romeoswing(swing)回复于 2003-12-01 15:29:24 得分 10

没明白你的程序到底怎么了?把返回的结果说清楚啊,有没有报错?  
  ResultSet.last()应该是没有问题的,但是你的rsTrans.first();while   (rsTrans.next()){}实际上会从第二行开始,不过这应该对流程没有影响。  
  其实我觉得你这样实现太麻烦了,判断结果集的行数后,再要从头读入一个String[]中,不如直接用一个Vector,不用判断结果集的长度,从头到尾往里头加就行了,当然实际情况我不了解。  
  Top

7 楼lyqq(曾经是菜,现在还是菜!)回复于 2003-12-01 16:39:46 得分 0

谢谢   romeoswing,不过我不是很会用vector,我看看书去!这样应该可以解决。  
   
  可是,我就是想弄明白,为什么会出现这样的情况!!  
   
  我的数据库服务器是Sql   Server   2000,在jsp的相应目录中已经拷贝了jdbc   4   sql   server   2.0的包文件,读取数据的时候没有问题,只是在这个地方总是出现异常。  
   
  java.sql.SQLException:   [Microsoft][SQLServer   2000   Driver   for   JDBC]Unsupported   method:   ResultSet.previous  
  连previous方法都不行,但是next方法可以取数据。  
   
  我刚刚查阅了MS   SQL   Server   JDBC的在线文档,发现   prevous   ,   last,   islast等等方法都是在   2.0   core版本中才支持。  
  可是   我在jsp   中使用的包就是   2.0的啊!  
  而且我还把包文件都反编译了,在BaseResultSet.class文件中存在   last,   previous等方法,实在不知道是怎么回事!!  
   
   
   
   
  Top

8 楼lyqq(曾经是菜,现在还是菜!)回复于 2003-12-01 16:59:08 得分 0

自己UP!!  
   
  问题怪怪!!很有挑战性!Top

9 楼flyshp(天堂雨)回复于 2003-12-01 17:08:55 得分 1

问题不是怪!  
   
  你首先要自己掌握一套调试的方法!!!  
   
  在你认为出错的的方   输出异常的具体信息!  
   
  之前   你可以把   sql   的执行语句输出到页面   !   一步一步的走   最终你会知道问题的所在!!  
   
  这种问题   只能靠自己慢慢地调试!!!   我感觉是这样   .   .   .   .   .   .   .Top

10 楼lyqq(曾经是菜,现在还是菜!)回复于 2003-12-01 17:17:09 得分 0

现在的问题,是   方法就是不支持。   可是明明装得驱动都没有问题,   1.0版本支持的方法都可以使用。   就是2.0版本的方法不可以,抛出的异常也是显示   Unsupported   method:   ResultSet.previous,   由错误信息的前面部分可以知道驱动没有问题,可就是这样!  
   
  我用的JB   9.0   来做的,方法都应该是标准!!  
   
   
  郁闷!!郁闷!!郁闷!!郁闷!!郁闷!!郁闷!!郁闷!!郁闷!!郁闷!!Top

11 楼lhbf(牧野)回复于 2003-12-01 17:24:31 得分 5

注意你使用的记录集锁类型和光标类型,参考一下数据库编程方面的资料。Top

12 楼pantech_36(~ 25436 ~)回复于 2003-12-01 17:32:41 得分 0

java.sql.Statement   stmtsearch=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);  
          String   sql="select   LEFT(a.ClsId,1)   as   ClsId_P,m.NAME,sum(a.countA)   as   total,a.pdatetimes   from   vistataa   as   a   right   join   vimain   as   m   on   (   LEFT(m.ClsId,1)=LEFT(a.ClsId,1)   and   RIGHT(m.ClsId,1)='0'   )   where   LEFT(pdatetimes,8)   >=   '"+fromyear+frommonth+fromday+"'   and   LEFT(pdatetimes,8)<='"+toyear+tomonth+today+"'   and   m.ClsId!='00'   group   by   LEFT(a.ClsId,1),m.NAME,a.pdatetimes   HAVING   sum(a.countA)   >0   order   by   pdatetimes   asc,ClsId_P   asc";  
  //out.print(sql);  
  ResultSet   rslist=stmtsearch.executeQuery(sql);  
  rslist.last();  
  int   count=rslist.getRow(); Top

13 楼lhbf(牧野)回复于 2003-12-01 18:07:56 得分 0

要使记录集可滚动,应该是用ResultSet.TYPE_SCROLL_INSENSITIVE,你不妨试试看。Top

14 楼lyqq(曾经是菜,现在还是菜!)回复于 2003-12-01 18:24:02 得分 0

呵呵!  
   
  如果我非要用   ResultSet.TYPE_SCROLL_SENSITIVE   来滚动,行吗?  
   
  HIA   HIA   !Top

15 楼lyqq(曾经是菜,现在还是菜!)回复于 2003-12-01 18:25:12 得分 0

To:   pantech_36(~   25436   ~)    
   
  我的rslist.last();用不了!抛出异常!Top

16 楼lyqq(曾经是菜,现在还是菜!)回复于 2003-12-01 19:26:51 得分 0

问题差不多解决了,我的Sql语句用了两次,就可以计数了。  
   
  但是这个问题为什么出现不能支持   .last()和   .first()方法,还是不知道为什么!Top

17 楼keylee94(阿悦)回复于 2003-12-01 19:45:41 得分 13

应该就是驱动问题,试验一下把驱动拷贝到jb的目录中!Top

相关问题

  • OleDbDataAdapter.Fill()方法总是出错!求救啊!
  • 总是出错???
  • C#静态方法出错????????????
  • PHP总是出错
  • MCIWndOpenDialog 总是出错
  • LILO安装总是出错?????
  • 为何总是出错
  • SHFileOperation函数总是出错。
  • 在eclipse中总是出错......
  • 为什么CreateTextFile方法会出错?

关键词

  • sql server 2000
  • 语句
  • 数据库
  • 驱动
  • 数据
  • 执行
  • 文件
  • 版本
  • jdbc
  • rstrans

得分解答快速导航

  • 帖主:lyqq
  • cen8535
  • helloqiner
  • romeoswing
  • flyshp
  • lhbf
  • keylee94

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo