我的程序在打印hello in getImportance beg
后立即终止。为什么这样?我的MAIL
表有值。
Connection connection = connectToDatabase();
Statement stmt = connection.createStatement();
ResultSet mailset = stmt.executeQuery("SELECT SUBJECT from MAIL");
ResultSet keywordset = stmt.executeQuery("SELECT SKEYWORD FROM KEYWORD");
System.out.println("hello in getImportance beg");
while(mailset.next())
{
System.out.println("hello in first while");
while(keywordset.next())
{
System.out.println("hello in second while");
if(mailset.getString("SUBJECT").equals(keywordset.getString("SKEYWORD")));
{
System.out.println("hello in if");
stmt.executeUpdate("UPDATE KEYWORD SET IMPORTANCE = IMPORTANCE'" + 1 + "'");
stmt.executeUpdate("COMMIT");
}
}
}
mailset.close();
keywordset.close();
connection.close();
我错过了什么?
谢谢!
感谢大家的回复。在第一个ResultSet
之后定义第二个while
就可以了。
答案 0 :(得分:3)
你的while循环显然没有运行。
检查mailset.next()
的结果答案 1 :(得分:1)
问题可能是您尝试从单个ResultSet
获取两个Statement
。
来自java.sql.Statement
文档:“默认情况下,每个Statement对象只能同时打开一个ResultSet对象。因此,如果一个ResultSet对象的读取与另一个ResultSet对象的读取交错,则必须已由不同的Statement对象生成。如果存在一个开放的对象,则Statement接口中的所有执行方法都会隐式关闭一个语句的当前ResultSet对象。“
答案 2 :(得分:0)
问题可能是mailset
。它可能没有结果。您可以在第一个循环之前使用System.out.println(mailset.next());
进行检查,或者对其进行调试。
第二个结果集上的另一个问题。据我了解:您尝试每次都在关键字集上进行迭代。然后,您需要使用(while(keywordset.next())
在第二个while循环keywordset.beforeFirst()
之后转到结果集的开头。