在数据库查询中,一般我们都是先获得查询的结果集,然后通过 rs.last 将游标移到记录集末,再用 rs.getRow() 函数来获得最后一条记录的行号,由此来获得该记录集的数量。
这个方法在oracle 数据库中运行正常,但是换到MS SQL中就会报出
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Unsupported method: ResultSet.last
这样的错误。
解决办法是:
Statement变量要按照如下设置:
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
这种记录查询网上说效率性能并不是很高,所以在这是我自己测式了一下
用了两种方法:
方法1:
String sql = "select * from tablename";
rs = stmt.executeQuery(sql);
rs.last();
int count = rs.getRow();
rs.beforFirst();
方法2:
String sql = "select count(*) from tablename";
rs = stmt.executeQuery(sql);
int count = rs.getInt(1);
sql = "select * from tablename";
rs = stmt.executeQuery(sql);
两个SQL的条件都是一样的,只是方法1是在程序里用rs.last()取出rs.getRow(),方法2由数据库自己算出,但方法1的查询结果还要进行处理,而方法2还要再执行一次select操作。
那么省出来的一次数据查询能抵得上rs.last()操作的效率吗?
经过多次对比测式
1.环境为 windows 2000,SQL SERVER 2000,JAVA
2.记录数:500。
3.结果:COUNT方法平均用时302毫秒;rs.last()方法平均用时369毫秒。
这可是只有500条记录,如果有上万条记录可想而知相差有多大
分享到:
相关推荐
NULL 博文链接:https://1017401036.iteye.com/blog/2401135
java.lang.RuntimeException: Unsupported algorithm: HmacSHA1 解决方法,阿里云
用于解决SQLSERVER连接问题驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接问题JAR包。
传输资料神器,使你不再有后顾之忧!
解决uiautomatorviewer.bat在android8.0及以上系统报错:“E/Screenshot: Unsupported protocol: 2”
NULL 博文链接:https://zhangmingji.iteye.com/blog/1969693
ubuntu,tensorflow环境搭建总结,pycharm 英伟达驱动 cudnn cuda
我写的模块大家可以在VS2013+QT5.5直接用,只需要改一下发送邮箱的账户和密码。支持发送附件
32位和64位 java6 连接sqlserver2012或者2016 出现 Caused by: javax.net.ssl.SSLHandshakeException: Unsupported curveId: 29 以及 DH key size must be multiple of 64, and can only range from 512 to 1024 ...
three.js加载gltf模型的完整demo,使用vue开发的,比较简单,便于理解
// { unsupported: 'class', minVersion: '4.0.0' } 或者: var unsupported = detect ( 'let' ) if ( unsupported ) { // ... } 否则,您可能会自动失败: detect . fail ( 'class' , 'generators' ) // Error...
解决Could not generate DH keypair 和 Unsupported curveId :29问题
今天做了一个JSP页面,运行时tomcat提示:org.apache.jasper.JasperException: Unsupported encoding: gb2312 错误,找了很久才找到出错的地方,原来是一个空格惹的祸。
26.2.0.jar 包,解决 (1) E/Screenshot: Unsupported protocol: 2 (2) Unexpected error while obtaining UI hierarchy java.lang.reflect.InvocationTargetException 导致的 uiautomatorviewer 无法获取截屏问题
android studio kotlin-plugin 1.5.30下载
静态 SIP 和 RTP 中继代理 介绍 该项目由 BluePackets 赞助 - 这是一个 Kamailio 配置,它构建了一个静态 SIP 和 RTP 代理,并在中继服务器和两个远程 SIP 服务器上的两个 IP 接口之间中继数据包。...
-Java SQL数据库。 嵌入式和服务器模式; 内存数据库 客户端-前端/ UI -Bootstrap是一个免费的开源CSS框架,专门用于响应式,移动优先的前端Web开发。 -与一些最广泛使用CSS框架集成的扩展表。 适用于Web和独立...
QT运行时需要有此动态库,放到和应用程序一级的地方即可加载QMYSQL的驱动,QT运行时需要有这个动态库,放到和应用程序一级的地方即可加载QMYSQL的驱动。...而此资源是较新版本的,不会出现此问题。
Simple Server使您可以随时随地轻松地启动并运行node.js静态文件服务器。 安装 安装: npm install --global simple-server 可执行文件: simple-server 使用 模块用法如下: require ( 'simple-server' ) ( dir...
问题1:Error: unrecognized/unsupported machine ID (r1 = 0x00000356). 问题2:Starting kernel ... Uncompressing Linux... done, booting the kernel. 就停止了 问题3:Freeing init memory: 之后就没有打印...