【发布时间】:2012-05-23 21:48:41
【问题描述】:
我正在尝试从 mySQL 服务器(在我的 LAN 中)读取一个巨大的结果集。我以寻找setFetchSize 方法的方式实现它:BalusC's Example。所以我做了:
con = DriverManager.getConnection(url, user, password);
//con.setAutoCommit(false);
st = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
st.setFetchSize(Integer.MIN_VALUE);
rs = st.executeQuery(query);
int count = 0;
while (rs.next ()) {
// Process entry
String rsc = rs.getString ("resource");
String tpc = rs.getString("topic");
System.out.println(count + ": " + rsc);
++count;
}
虽然,它挂在第 1077 行的 rs.next() 行。它不会抛出异常。
编辑:
超时后发生了一些新的事情。它返回了这个错误 留言:
JDWP exit error JVMTI_ERROR_NONE(0): getting frame location [../../../src/share/back/stepControl.c:641]
这个错误似乎无关。
EDIT2:我编写了一个 PHP 脚本,用于按流检索结果,并且发生的情况完全相同。所以跟JDBC没啥关系……不知道怎么回事!!
【问题讨论】:
-
Integer.MIN_VALUE是负值。setFetchSize()中只定义了 0 和正值。您想通过这次通话实现什么目标? -
不,我发现这是为 JDBC mySQL 做的方法
-
例如:stackoverflow.com/questions/2180835/… Btw,@BalusC 似乎是这方面的专家。
-
哦,MySQL 人又一次破坏了标准。他们多么好。恐怕我在这里帮不了你。
-
有趣,所以负数表示“一次一行”。我想知道为什么没有选择 setFetchSize(1) 。还与 PAI 文档冲突,该文档说 setFetchSize 为值
标签: java mysql jdbc large-data-volumes