Java 如何确定setMaxRows限制了返回的行数(JDBC)
使用JDBC,而不是像Hibernate或JSTL库这样的特定框架。只需JDBC驱动程序mysql-connector-java-5.1.34-bin.jar 给定一个有20到25行的表和一个我已经设置了.setMaxRows20的准备好的语句,我如何确定返回的20行实际上是20多行中的一行?我也试过。。。SQL语句中的限制为20 我知道JSTL在使用。。。但我想了解如何从pojo DAO中检测到这一点Java 如何确定setMaxRows限制了返回的行数(JDBC),java,mysql,jdbc,dao,Java,Mysql,Jdbc,Dao,使用JDBC,而不是像Hibernate或JSTL库这样的特定框架。只需JDBC驱动程序mysql-connector-java-5.1.34-bin.jar 给定一个有20到25行的表和一个我已经设置了.setMaxRows20的准备好的语句,我如何确定返回的20行实际上是20多行中的一行?我也试过。。。SQL语句中的限制为20 我知道JSTL在使用。。。但我想了解如何从pojo DAO中检测到这一点 感谢您的帮助。我查看了MySQL连接器的源代码,结果发现MysqlIO.readSingle
感谢您的帮助。我查看了MySQL连接器的源代码,结果发现MysqlIO.readSingleRowSet没有指出返回的结果是否确实受到了对准备语句使用setMaxRows的限制 至于JSTLSQL标记及其maxRows的实现,这有点误导。它实际上没有在其prepared语句中使用.setMaxRows,特别是因为它需要确定是否已达到限制,但存在更多行,以便能够将limitedByMaxRows设置为true。因此,在数据库上执行的查询实际上并不受限制 因此,在设置.setMaxRows时,我将在POJO中实现的解决方案如下:
if (pstmt.getMaxRows() > 0 && rowCount == pstmt.getMaxRows()) {
try ( ResultSet countRs =
conn.createStatement().executeQuery("select count(*) from INVENTORY")
) {
if (countRs.first()) {
limitReached = rowCount < countRs.getInt(1);
}
}
}
我在努力理解你的问题。您正在尝试创建分页吗?还有,哪个库可以找到sql:JSTL函数?JSTL代表JavaServer Pages标准标记库,请参阅-我在这里不是在寻找系统解决方案,我想做的只是在标题中进行总结-不管我知道JSTL的含义是什么@Mike。我不明白JSTLSQL标记来自哪里。此外,您寻求的答案可能需要您了解JDBCAPI以及RDBMS供应商对该API的实现。并不是所有的应用程序都有JDBC兼容的驱动程序。您好@Buhake,sql标记是JSTL JSTL-api-1.2.jar、JSTL-impl-1.2.jar的一部分,下面是一个如何在jsp页面中使用它的示例:选择sku,来自库存${widget.sku}:${widget.name}谢谢@Mike。我不知道JSTL有sql标记。我学到了一些新东西-D