JDBC嵌套while循环

那里。 我是一个初学者使用java。我想为我的SQL查询结果做一个嵌套的while循环" title="while循环">while循环。JDBC嵌套while循环

我最初的结果就像下面,

eno ename title date_visit ssn   pname  charge  

103 Jekyl Doctor 20170717 946883650 Gershwin 125

106 Ratchet Nurse 20170817 946883650 Gershwin 125

103 Jekyl Doctor 20170917 946883650 Gershwin 182

104 Caligari Doctor 20170707 831287780 Schubert 182

106 Ratchet Nurse 20170930 799023031 Haydn 190

102 Welby Doctor 20170818 416806352 Bernstein 210

102 Welby Doctor 20170808 874136439 Brahms 245

104 Caligari Doctor 20170808 796235486 Wagner 245

102 Welby Doctor 20170929 445139565 Chopin 405

102 Welby Doctor 20170910 874136439 Brahms 512

103 Jekyl Doctor 20170910 524246868 Verdi 512

103 Jekyl Doctor 20170909 129141378 Vivaldi 667

103 Jekyl Doctor 20170909 524246868 Verdi 667

,我写我的Java语句像下面,

//Now we execute our query and store the results in the myresults object:  

ResultSet myresults1 = stmt1.executeQuery("SELECT DISTINCT eno, ename, title FROM Staff_Activity");

ResultSet myresults2 = stmt2.executeQuery("SELECT eno, ename, title, date_visit, ssn, pname, SUM(charge) AS total_charge FROM Staff_Activity GROUP BY eno, ename, title, date_visit, ssn, pname");

System.out.println("Employee_ID\tEmployee_Name\tTitle");

System.out.println("-----------\t-------------\t------"); //Print a header

while (myresults1.next()) { //pass to the next row and loop until the last

System.out.println(myresults1.getInt("eno") + "\t\t" + myresults1.getString("ename") + "\t\t" + myresults1.getString("title"));

while (myresults2.next()) {

if (myresults1.getInt("eno")==(myresults2.getInt("eno"))) {

System.out.println(myresults2.getInt("date_visit") + "\t\t" + myresults2.getInt("ssn") + "\t\t" + myresults2.getString("pname") + "\t\t" + myresults2.getInt("total_charge"));

}//Print the current row

}

System.out.println();

}

我只得到了结果我的表中只有一名工作人员,

Employee_ID  Employee_Name Title 

----------- ------------- ------

103 Jekyl Doctor

20170909 524246868 Verdi 667

20170909 129141378 Vivaldi 667

20170910 524246868 Verdi 512

20170717 946883650 Gershwin 125

20170917 946883650 Gershwin 182

106 Ratchet Nurse

102 Welby Doctor

104 Caligari Doctor

真的想知道我的代码有什么问题。

在此先感谢。

回答:

第一次执行第二个循环时,它会到达myresults2的末尾;一旦发生这种情况,myresults2.next()将始终返回false,所以它只会在第一次运行。

如果ResultSet只是前向,则只能将光标位置重置为开始位置,因此每次完全消耗ResultSet时都必须重新执行第二个查询。

若要使ResultSet为可滚动(不是只转发),因此无需重新执行查询即可重置其光标位置,请参阅此示例:https://stackoverflow.com/a/8033197/6245535。

另一个优化将是(优选使用一个PreparedStatement)代替总是检查是否“ENO”代码与if语句匹配来执行使用与从第一回路电流“ENO”一个WHERE子句过滤所述第二查询。

以上是 JDBC嵌套while循环 的全部内容, 来源链接: utcz.com/qa/258563.html

回到顶部