0

私はこれに苦労しており、修正を見つけることができないようです。

public static void doQ(Connection c){
    try
    {
        stmt = c.createStatement();
        ResultSet rs1 = stmt.executeQuery("SELECT * FROM VQ1");
        ResultSet rs2 = stmt.executeQuery("SELECT * FROM VQ2");
        ResultSetMetaData meta = rs2.getMetaData();
        System.out.println(""); 
        System.out.println("Statistics for " + rs1.getString(2) + " By Spencer"); // This line recieves the error
        System.out.println("");
        System.out.println("Orders");
        System.out.println("============================================================ =========================");
        System.out.printf("%-10s %-10s %11s %12s\n", meta.getColumnName(1), meta.getColumnName(2), meta.getColumnName(3), meta.getColumnName(4));
        System.out.println("");
        while(rs2.next()){
            System.out.printf("%10s %10s %11s %12s\n",rs2.getString(1), rs2.getString(2), rs2.getString(3), rs2.getString(4));
        }//end while
        rs2.close();
        rs1.close();
    } catch (SQLException ex){
        System.err.println("\nERROR :" + ex.getMessage());

    }// end try catch

}//end method

コードを実行しようとすると、resultSet が枯渇したというエラーが表示されます。正常に動作するすべての列の完全なテーブルを出力する必要があります。私が抱えている唯一の問題は、

System.out.println("Statistics for " + rs1.getString(2) + " By Spencer");

このコード行を if(rs1.next()) に配置しようとしましたが、条件が真になることはないため、行を完全にスキップします。私は完全に困惑しており、助けが欲しいです。

私のSQLビュー

    DROP VIEW VQ1;

    CREATE VIEW VQ1
    AS
    SELECT COMPANYNAME, TO_CHAR(sysdate, 'dd/mm/yyyy') AS "date"
    FROM CUSTOMERS
    GROUP BY COMPANYNAME
    WITH READ ONLY;

    DROP VIEW VQ2;

    CREATE VIEW VQ2
    AS
    SELECT O.ORDERID, TO_CHAR(O.ORDERDATE, 'dd/mm/yyyy') AS "Order date",
    NVL2(O.SHIPPEDDATE, 'Shipped', 'Not Shipped') AS "Status",
    TO_CHAR(((OD.UNITPRICE * OD.QUANTITY) - (OD.UNITPRICE * OD.QUANTITY * OD.DISCOUNT)), '$999.99') AS "Total"
    FROM ORDERS O INNER JOIN ORDERDETAILS OD
    ON O.ORDERID = OD.ORDERID
    GROUP BY O.ORDERID, TO_CHAR(O.ORDERDATE, 'dd/mm/yyyy'), NVL2(O.SHIPPEDDATE,'Shipped', 'Not Shipped'), TO_CHAR(((OD.UNITPRICE * OD.QUANTITY) - (OD.UNITPRICE * OD.QUANTITY * OD.DISCOUNT)), '$999.99')
    WITH READ ONLY;
4

0 に答える 0