关于JDBC不支持ResultSet.last()等方法的解决

现象:使用微软的JDBC for SqlServer sp3却发现不支持ResultSet.last(),ResultSet.beforeFirst() 等方法,每次一调用这些方法就出现异常,异常信息是:java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Unsupported method: ResultSet.last

解决:Statement变量要按照如下设置

stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);

类似的,

CallableStatement cs = conn.prepareCall("{call TESTSP}",ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

其中type_scroll_sensitive是个关键

字段摘要

TYPE_SCROLL_SENSITIVE

 该常量指示可滚动但通常受其他的更改影响的 ResultSet 对象的类型。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
// 先连接数据库 Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/javaweb?useUnicode=true&characterEncoding=UTF-8"; String username="root"; String password=""; Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/environment?charaterEncoding=utf-8","root","123456"); request.setCharacterEncoding("UTF-8");//设置字符编码,避免出现乱码 double time1 = Double.parseDouble(request.getParameter("time1")); double time2 = Double.parseDouble(request.getParameter("time2")); String sql = "select * from cx where time>=? and time<=?"; PreparedStatement preparedStatement = conn.prepareStatement(sql); preparedStatement.setDouble(1,time1); preparedStatement.setDouble(2,time2); ResultSet resultSet = preparedStatement.executeQuery();//执行sql语句用来返回单个 ResultSet 对象 resultSet.last();//移动到最后一条记录 %> <center> 在此段时间内共有 <font size="5" color="red"><%=resultSet.getRow()%></font>条记录 <table border="2" bgcolor="rgba(216, 191, 216, 0.5)" width="650"> <tr> <td>温度</td> <td>湿度</td> <td>光照</td> <td>时间</td> </tr> <% resultSet.beforeFirst(); while (resultSet.next()){ %> <tr align="center"> <td><%=resultSet.getString("temperature")%></td> <td><%=resultSet.getString("humidity")%></td> <td><%=resultSet.getString("guangzhao")%></td> <td><%=resultSet.getString("time")%></td> </tr> <%}%> </table> </center> <% if (resultSet!=null){ resultSet.close(); } if (preparedStatement!=null){ preparedStatement.close(); } if (conn!=null){ conn.close(); } %> 找出这段代码的错误
最新发布
05-27

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值