JAVA循环中的循环和多结果集关闭第一个结果集

标签 java loops resultset

我对这段代码有疑问:

im = stat.executeQuery("SELECT * FROM imones");

        while (im.next()) {

            sask = stat2.executeQuery("SELECT * FROM saskaitos WHERE imone='" + im.getInt("id") + "'");
            while (sask.next()) {

                suma = suma + Integer.parseInt(sask.getString("suma"));

                kvit = stat3.executeQuery("SELECT * FROM kvitai WHERE sask_nr='" + sask.getInt("sask_nr") + "'");
                while (kvit.next()) {
                    suma = suma - Integer.parseInt(kvit.getString("suma"));
                }
                kvit.close();

            }
            sask.close();

            //if (suma > 0) {
            imone = im.getString("pav");
            skola = suma;
            DefaultTableModel y = (DefaultTableModel) pagrindinis.visos_skolos_table.getModel();
            Vector rowData = new Vector();

            rowData.add(imone);
            rowData.add(skola);
            y.addRow(rowData);
            //}
        }

        im.close();

我只得到一个循环( while (im.next()) ),因为“sask”查询没有结果,并且它关闭“im”结果集,而多语句没有帮助。我怎样才能让这段代码工作?谢谢!

最佳答案

不需要嵌套循环,这可以通过一个连接表并对金额求和的 SQL 语句来完成。显然,我没有可以使用的所有列名称,但您应该能够将我使用的名称替换为您自己的名称:

SELECT company.name,
       SUM(bill.amount) - SUM(cheque.amount) AS amount
FROM       imone     AS company
INNER JOIN saskaitos AS bill   ON company.id   = bill.imone
LEFT  JOIN kvitai    AS cheque ON bill.sask_nr = cheque.sask_nr
GROUP BY company.name;

关于JAVA循环中的循环和多结果集关闭第一个结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27204341/

相关文章:

java - 如何在java中检查结果集是否为空或为null

java - java.lang.String 中的 NullPointerException

java - 在测试期间以编程方式设置 genymotion gps 在设置纬度时导致 "SecurityException: invalid package name"

Java MySql 列未找到

r - 在 R 中为栅格设置可覆盖的临时文件

java - HashMap ClassCastException 字符串到 MyClass

mysql - MySQL存储过程OUT参数返回结果集

java - 如何防止 "Broken pipe"关闭我的 tomcat 网站?

java - 在高峰时间,请求在 Tomcat 8 中花费太多时间

javascript - 有没有更优雅的方式来编写这个循环?