首页 > 其他分享 >关于ResultSet.last()方法报错问题的解决

关于ResultSet.last()方法报错问题的解决

时间:2023-09-21 10:03:01浏览次数:35  
标签:last 常量 对象 ResultSet 报错 Statement TYPE


今天看到这样的一个文章,感觉写的挺好,就把它拿过来收藏一下,也与大家分享一下。有位朋友在使用ResultSet.last时,遇到了这样的问题java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Unsupported method: ResultSet.last。

 

在不想再次通过查询数据库得到记录条数的情况下,(如:select count(*) from tableName)我们可能会使用ResultSet.last()方法将游标指向结果集末尾,并使用ResultSet.getRow()方法获取当前行号来取得最大行号。

可能遇到这样的问题:

java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Unsupported method: ResultSet.last

说JDBC不支持这种方法,这是因为Statement对象是专门处理ResultSet记录的API对象,所以它对于所要处理的ResultSet还是有要求的,如果要使用扩展式的游标,那么就要使用以下构造:


           Statement = Connection.createStatement(int resultSetType,int resultSetConcurrency)


resultSetType(结果集类型)包括:

    ResultSet.TYPE_FORWARD_ONLY  缺省类型。该常量指示光标只能向前移动的 ResultSet 对象的类型。

    ResultSet.TYPE_SCROLL_INSENSITIVE 该常量指示可滚动但通常不受 ResultSet 底层数据更改影响的 ResultSet 对象的类型。

    ResultSet.TYPE_SCROLL_SENSITIVE 该常量指示可滚动并且通常受 ResultSet 底层数据更改影响的ResultSet 对象的类型。

resultSetConcurrency(并发类型)包括:
    ResultSet.CONCUR_READ_ONLY 缺省类型。该常量指示不可以更新的 ResultSet 对象的并发模式。

    ResultSet.CONCUR_UPDATABLE 该常量指示可以更新的 ResultSet 对象的并发模式。

了解了以上的构造之后,我们便对Statement进行修改如下:


      Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,

                                             ResultSet.CONCUR_READ_ONLY);

select * from table1";            // 查询表table1中的内容

// 执行sql语句

// 定位光标到最后一条记录

// 打印当前,即最后一条记录的行号


 

 

ps:这种方法是要装载数据的,所以数据量一旦过大就是会超出内存设置的。

标签:last,常量,对象,ResultSet,报错,Statement,TYPE
From: https://blog.51cto.com/u_16255870/7548732

相关文章

  • 关于hive中使用group by报错的问题的解决
    问题描述+问题解决在我在hive数据库中使用groupby的函数时,如果在我们决定显示出来的字段名中有非聚合的字段(即字段名为原生字段名,并没有加什么SUM等聚合函数),那么,我们就必须在groupby后面引用上这个非聚合字段,否则就会报错;同时,在我们写数据到新的数据表中时,一定要保证我们所......
  • mongo报错state should be: open
    场景,重新发布项目报错错误信息如下:java.lang.IllegalStateException:stateshouldbe:openatcom.mongodb.assertions.Assertions.isTrue(Assertions.java:79)atcom.mongodb.internal.connection.BaseCluster.getDescription(BaseCluster.java:162)......
  • springBoot 启动报错: If you want an embedded database (H2, HSQL or Derby), please
    原因其实这个异常在SpringBoot中是一个比较常见的异常,一般是因为SpringBoot自动配置时,检测到我们添加了MySQL、Oracle、Mybatis等和数据库相关的依赖包,结果我们的配置文件中却没有添加数据库相关的配置,比如:spring:datasource:driver-class-name:com.mysql.jdbc.Driver......
  • IIS报错:HTTP 错误 404.17 - Not Found
    新建处理程序映射 *.svc%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dllsvc-ISAPI-4.0*.svc%SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dllsvc-ISAPI-4.0-64......
  • IIS报错:HTTP 错误 404.2 - Not Found 由于Web服务器上的”ISAPI和CGI限制”列表设置,无
     解决方法:  ......
  • GitLab报错502——Whoops, GitLab is taking too much time to respond 502 错误
    一、错误页面错误原因:原来默认配置的8080端口号被其他应用占用冲突了,只需换成其他新的端口号就可以了二、修复步骤1.首先vim /etc/gitlab/gitlab.rb打开配置文件2.修改配置找到如下配置项,原来是用#注释的,把前面的#去掉取消注释,原来的默认端口号应该是8080,改成你自己想要的端口号......
  • yourls安装-报错AbstractExtendedPdo.php
    1`Fatalerror:UncaughtPDOException:SQLSTATE[HY000]:Generalerror:3Errorwritingfile'./example_com/yourls_url.frm'(Errcode:28)in/www/wwwroot/example.com/includes/vendor/aura/sql/src/AbstractExtendedPdo.php:565Stacktrace:#0/www/w......
  • 2023-9-20交易日志报错排查分析
    1、下单失败:名词解释:NOTIONAL名义价值来源:https://binance-docs.github.io/apidocs/spot/cn/#cc81fff589名义价值过滤器(NOTIONAL)定义了订单在一个交易对上可以下单的名义价值区间.applyMinToMarket定义了minNotional是否适用于市价单(MARKET)applyMaxToMarket定义了......
  • 解决pycharm报错:_jb_pytest_runner.py:7:....from pkg_resources import iter_entry_p
    遇到问题执行pytest用例出现警告D:\pycharm\PyCharm2020.1.5\plugins\python\helpers\pycharm_jb_pytest_runner.py:7:DeprecationWarning:pkg_resourcesisdeprecatedasanAPI.Seehttps://setuptools.pypa.io/en/latest/pkg_resources.htmlfrompkg_resourcesimport......
  • QA|Pycharm update时报错ssh: connect to host github.com port 22: Connection timed
    场景:另一台电脑很久没有链接Github了,今天执行update失败,报错如下:2023/9/2015:09UpdatefailedFunny_ScriptsandSpider:Connectionresetby20.205.243.166port22Couldnotreadfromremoterepository.Please......