Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何确定setMaxRows限制了返回的行数(JDBC)_Java_Mysql_Jdbc_Dao - Fatal编程技术网

Java 如何确定setMaxRows限制了返回的行数(JDBC)

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

使用JDBC,而不是像Hibernate或JSTL库这样的特定框架。只需JDBC驱动程序mysql-connector-java-5.1.34-bin.jar

给定一个有20到25行的表和一个我已经设置了.setMaxRows20的准备好的语句,我如何确定返回的20行实际上是20多行中的一行?我也试过。。。SQL语句中的限制为20

我知道JSTL在使用。。。但我想了解如何从pojo DAO中检测到这一点


感谢您的帮助。

我查看了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