我在Java中的mysql查询在某个位置总是停止(即冻结并且不会继续),即543,858;即使表中包含约。 200万条目。我通过记录当前的结果提取来检查这一点。 它是可重复的,每次发生在相同的位置。JDBC /结果集错误
"SELECT abc from bcd WHERE DATEDIFF(CURDATE(), timestamp) <= '"+days+"'");
增加:这绝对是一个 Java错误,我只是尝试了这种说法在Navicat(50岁运行时间)。
查询似乎在日志告诉我现在正在添加位置543,858的结果后冻结。
try {
...
ResultSet res = new ResultSet();
PreparedStatement stmt = new PreparedStatement(); // prepare statmenet etc.
stmt.setFetchSize(Integer.MIN_VALUE);
res = stmt.executeQuery();
...
System.out.println(res.getStatement());
...
while (res.next())
treeSet.add(res.getString("userid"));
} catch (Exception e) {
e.printStackTrace();
}
编辑:我们能够找出问题所在。这种方法很好,返回的结果(500,000而不是2,000,000)也是正确的(在错误的数据库中查找以验证金额);问题是,使用上述结果的下一个方法调用需要从字面上永远,但没有实现日志记录。所以我一直被缺少控制台日志所迷惑。
谢谢反正!
“停止”是什么意思? (请注意,您也应该使用参数化SQL,因为各种原因。)如果您可以显示您的代码,这将有所帮助。 – 2012-01-02 10:53:08
如果没有先看到一些Java,这是非常不可能诊断的。 – dasblinkenlight 2012-01-02 10:54:36
@ user1004816更好地在问题中粘贴您的代码 – soulcheck 2012-01-02 11:10:22