在数据库查询中,一般我们都是先获得查询的结果集,然后通过 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建立安全连接。这个问题通常表明数据库连接在尝试使用SSL进行加密时遇到了障碍,可能影响数据的...
### java.lang.UnsupportedClassVersionError问题的解决方法 在开发Java应用程序的过程中,经常会遇到与JDK版本不兼容的问题,其中一种常见的异常就是`java.lang.UnsupportedClassVersionError`。该错误通常发生在...
综上所述,"javax.imageio.IIOException: Unsupported Image Type"是一个关于Java图像处理时遇到的典型问题,主要涉及图像格式、编码和解码器的支持。通过检查和调整代码,以及利用第三方库,可以有效地解决这个问题...
在SQL Server数据库的使用过程中,有时会出现“驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接”的错误,这通常伴随着“Could not generate DH keypair”和“Unsupported curveId:29”的...
传输资料神器,使你不再有后顾之忧!
解决uiautomatorviewer.bat在android8.0及以上系统报错:“E/Screenshot: Unsupported protocol: 2”
错误三:org.apache.jasper.JasperException: Unsupported encoding: [UTF-8] 错误原因:pageEncoding=UTF-8 对应跳转 jsp 中设置编码时少了个“ 解决方式:加上缺少的“ 错误四:The prefix "context" for ...
这只是一个基础示例,实际项目可能还需要考虑性能优化、动画控制、光照效果、材质调整等复杂问题。记住,实践是最好的老师,动手尝试并不断学习,你将能够熟练掌握这些技术,创造出更复杂的Web 3D应用场景。
16进制用于便于人类阅读,而Base64则用于在网络中传输,因为它只包含ASCII字符,不会引起乱码问题。 6. **编码方式**:加密后的结果通常需要编码以便存储或传输,如使用Base64或Hex编码。JAVA中的`java.util.Base64...
安装过程中可能会遇到黑屏或者循环登录的问题,可以通过编辑Grub配置文件,添加参数nomodeset来解决。 6. 安装TensorFlow:安装了Ubuntu操作系统、必要的依赖包、显卡驱动之后,可以开始安装TensorFlow。可以使用...
ResultSet rs = stmt.executeQuery(sql); ``` 4. 处理结果集并关闭资源: ```java while (rs.next()) { // 读取结果集中的数据 } rs.close(); stmt.close(); conn.close(); ``` 除了基本的CRUD(创建、读取、更新...
我写的模块大家可以在VS2013+QT5.5直接用,只需要改一下发送邮箱的账户和密码。支持发送附件
4. 调试支持:允许在Kotlin代码中设置断点,进行单步调试,查看变量状态,方便问题定位。 5. 代码导航:提供类、方法和变量的快速跳转,便于理解和导航代码结构。 四、安装与更新Kotlin插件 在Android Studio中,...
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 ...
error('Unsupported data type'); end matrix = reshape(matrix, cols, rows); end ``` 此函数首先获取矩阵的行数、列数和数据类型,然后解析"data"节点中的所有元素并转换为矩阵。最后,根据矩阵的维度重塑...
解决jdk1.6连接sqlserver:驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。内含readme文档。根据大神源码打包,本人项目使用无问题,如果对你有帮助的话可以给个好评。