Java sql getPreparedStatement 在 4294967295 行后停止

标签 java sql prepared-statement resultset

我正在尝试使用 java.sql.PreparedStatementexecuteQuery 从表中获取所有行,但下载在达到 4294967295(2^32- 1)行;我已经尝试过返回 0 的 preparedStatement.getMaxRows(),这意味着没有获取限制;

根据 https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#getMaxRows() , "如果超过这个限制,多余的行将被静默删除。"这听起来正是我的工作发生了什么,有谁知道我还应该调试什么,以及为什么当此设置为 0 时我会达到最大行数限制?

谢谢。

最佳答案

发现问题,根据https://www.exasol.com/support/browse/SOL-108

注意:如果您执行超过 4,294,967,295 行的单次加载,由于 JTDS 中的错误,您应该使用 MSSQL native JDBC 驱动程序(请注意,数字 4,294,967,295 是 32 位无符号整数的最大值)。如果您将 JTDS 用于如此大的负载,则只会导入 4,294,967,295 行,其余的将被忽略而不会出现错误。

MSSQL JDBC 驱动程序和示例在这里: https://www.microsoft.com/en-us/sql-server/developer-get-started/java/rhel/step/2.html

关于Java sql getPreparedStatement 在 4294967295 行后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50633146/

相关文章:

SQL Server : error on column add

mysql、预处理语句和自动类型转换

hibernate - JDBC 准备语句 : How to add a Composite Type

java - 使用 Google Youtube API

mysql - SQL: 查询where column = x, when column2 != y;当 column2 = x 时 y = 列..如果这是有道理的

java - Java 后端服务的性能测试

mysql - 重复问题

php - mysqli_fetch_assoc()需要参数/调用成员函数bind_param()错误。如何获取并修复实际的mysql错误?

java - 使用 try/catch 而不是多个 IF 语句更好吗?

Java - 在实例化时使用反射来防止字段分配?