这个表怎么只能按字段顺序取值呀?请大家帮忙

ttoc 2004-09-05 02:11:35
我是用的rs连的SqlServer数据库,用Microsoft SQL Server 2000 Driver for JDBC Service Pack 1的驱动,用tomcat4.0做的服务器,在数据库中有个表,只能按照字段顺序取值,可能没说明白,举个例子吧

rs=.....
while(rs.next()){
System.out.println(rs.getObject(2));
System.out.println(rs.getObject(3));
}
就能打印出来数据
要是写成
while(rs.next()){
System.out.println(rs.getObject(3));
System.out.println(rs.getObject(2));
}
就告诉我
StandardWrapperValve[debugjsp]: Servlet.service() for servlet debugjsp threw exception

javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC]ResultSet can not re-read row data for column 2.

javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC]ResultSet can not re-read row data for column 2.(这句话的确是现实了两次,我只写了一个getObject(2))
.......下边就是一大堆异常了

写成getXXXX(字段名)问题也是一样的,连错误都一样

我数据库里还有别的表,别的表再用的时候还没看见有这中情况,麻烦问一下,这什么问题呀?是我的表建的不对,还是代码写的不对?为什么只有这一个表有这种情况?谢谢大家了

...全文
124 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttoc 2004-09-07
  • 打赏
  • 举报
回复
LJWS(归来) 佩服,佩服,果然是这样的,同样谢谢javaflyers(javaflyers)兄,帮我解决了问题
babys 2004-09-06
  • 打赏
  • 举报
回复
郁闷中,
javaflyers 2004-09-06
  • 打赏
  • 举报
回复
同意: LJWS(归来)
Andy__Huang 2004-09-05
  • 打赏
  • 举报
回复
java的不會
LJWS 2004-09-05
  • 打赏
  • 举报
回复
:)
应该是我转的贴中所说的有text/image之类的blob数据类型
别的表是否也有呢
javaflyers 2004-09-05
  • 打赏
  • 举报
回复
我认真看了一下你的程序,感觉是我理解错了。因为getObject(int columnIndex)这个方法是读取某一列的。而我告诉你的却是默认情况下,指针在行(!!!!)上的滚动只能向前。

但是你用了那些参数,问题却可以得到解决,晕~~~~~

我想是不是你的那张表根本没有第4个字段,因为是从0开始计数的。getObject(3)读取的是第4个属性。



LJWS 2004-09-05
  • 打赏
  • 举报
回复
参考一下
http://support.microsoft.com/default.aspx?scid=kb;en-us;824106
pengda1i 2004-09-05
  • 打赏
  • 举报
回复

rs=.....
写全
应该和打开方式有关
ttoc 2004-09-05
  • 打赏
  • 举报
回复
谢谢 javaflyers(javaflyers) 问题解决了,我还想问一下:那为什么同样是上边那样的语句,我用在别的表中就可以,用在这个表中就出错!!
ttoc 2004-09-05
  • 打赏
  • 举报
回复
还要麻烦大家一下,那为什么同样是上边那样的语句,我用在别的表中就可以,用在这个表中就出错呢?
ouyld 2004-09-05
  • 打赏
  • 举报
回复
up
zjcxc 2004-09-05
  • 打赏
  • 举报
回复
不懂java,建议楼主转到java版.
javaflyers 2004-09-05
  • 打赏
  • 举报
回复
在你的程序里已经RS是默认的设置,所以只能向前,你已经移动到3了,所以不能回头到2。
javaflyers 2004-09-05
  • 打赏
  • 举报
回复
用缺省设置创建时,ResultSet 是一种只能访问一次(one-time-through)、只能向前访问(forward-only)和只读的对象。您只能访问数据一次,如果再次需要该数据,必须重新查询数据库。

然而,并不只有这一种方式。通过设置 Statement 对象上的参数,您可以控制它产生的 ResultSet。例如:

...
Class.forName(driverName);
db = DriverManager.getConnection(connectURL);
Statement statement = db.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

...

这个 Statement 现在将产生可以更新并将应用其他数据库用户所作更改的 ResultSet。您还可以在这个 ResultSet 中向前和向后移动。

第一个参数指定 ResultSet 的类型。其选项有:

TYPE_FORWARD_ONLY:缺省类型。只允许向前访问一次,并且不会受到其他用户对该数据库所作更改的影响。
TYPE_SCROLL_INSENSITIVE:允许在列表中向前或向后移动,甚至可以进行特定定位,例如移至列表中的第四个记录或者从当前位置向后移动两个记录。不会受到其他用户对该数据库所作更改的影响。
TYPE_SCROLL_SENSITIVE:象 TYPE_SCROLL_INSENSITIVE 一样,允许在记录中定位。这种类型受到其他用户所作更改的影响。如果用户在执行完查询之后删除一个记录,那个记录将从 ResultSet 中消失。类似的,对数据值的更改也将反映在 ResultSet 中。
第二个参数设置 ResultSet 的并发性,该参数确定是否可以更新 ResultSet。其选项有:

CONCUR_READ_ONLY:这是缺省值,指定不可以更新 ResultSet
CONCUR_UPDATABLE:指定可以更新 ResultSet

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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