SQL server 读取某表行数以及报错ResultSet may only be accessed in a forward direction

本文深入探讨了在使用JDBC时遇到的ResultSet相关错误,特别是与jTDS驱动中TYPE_SCROLL_INSENSITIVE和TYPE_SCROLL_SENSITIVE类型的选择。通过分析一个具体的实例,解释了如何正确设置prepareStatement函数的第二个参数来避免错误,并实现对数据库表记录行数的准确计数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天这个小小的问题难住我半天,(毕竟实习生水平)~~浪费光阴啊。不过总算解决了
        ResultSet may only be accessed in a forward direction   这个错误的引起是jTDS驱动中的TYPE_SCROLL_INSENSITIVE只支持只读操作,TYPE_SCROLL_SENSITIVE支持Update操作,但不支持另外的Insert
所以我们prepareStatement()函数的第二个参数用 TYPE_SCROLL_SENSITIVE比较好
                //某表的记录的行数
        
        public int CountRowNumber(String tableName){
                        //参数为表名
            try {
                   ResultSet rs = null;
                   String sql = "select * from "+tableName;
                   //Statement stmt = conn.createStatement();
                   PreparedStatement pstmt = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);            
                   rs = pstmt.executeQuery();
                   rs.last();
                   return rs.getRow();
                   } catch (SQLException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                      return -1;
                   }
             }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值