CSVファイルにSQL ResultSetを書きます

ACupOfBreadTea:

私は、データベースに接続するには、ファイルに結果を書き込むために、SQLクエリと試行を実行する機能を持っています。

public class DBReader {

    public ResultSet executeSQL(SqlContainer sc) {
        String url = "url";
        String user = "user";
        String password = "pw";
        Connection con;
        Statement stmt;
        ResultSet rs;

        try {
            System.out.println("=== Started SQL ===");
            Class.forName("com.ibm.db2.jcc.DB2Driver");
            con = DriverManager.getConnection(url, user, password);
            con.setAutoCommit(false);
            stmt = con.createStatement();

            rs = stmt.executeQuery(sc.getSQL());


            CSVWriter writer = new CSVWriter(new FileWriter("result.csv"));
            writer.writeAll(rs, true);

            stmt.close();
            con.commit();
            con.close();

            System.out.println("    Finished SQL");
            return rs;
        } catch (SQLException | ClassNotFoundException | IOException e) {
            e.printStackTrace();
        }
        return null;
    }

}

私は機能上の実行時にはまだ出てくるファイルは空です。結果セットが空の場合、私は、テストに次のコードを使用しましたが、私は実行している場合:

while (rs.next()) {
                String value = rs.getString(4);
                System.out.println("Something = " + value);
            }

それはいくつかの値を返します。

私は、事前に感謝を右方向に任意のヘルプやうなずきをapreaciateと思います。

Kokogino :

あなたは閉じる必要がありますwriter同様:

writer.close();

それとも、より良い、あなたはそれを自動的に閉じ試し-とリソースステートメントを使用することができます。

        try(CSVWriter writer = new CSVWriter(new FileWriter("result.csv"));) {
            System.out.println("=== Started SQL ===");
            Class.forName("com.ibm.db2.jcc.DB2Driver");
            con = DriverManager.getConnection(url, user, password);
            con.setAutoCommit(false);
            stmt = con.createStatement();

            rs = stmt.executeQuery(sc.getSQL());

            writer.writeAll(rs, true);

            stmt.close();
            con.commit();
            con.close();

            System.out.println("    Finished SQL");
            return rs;
        } catch (SQLException | ClassNotFoundException | IOException e) {
            e.printStackTrace();
        }

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=318371&siteId=1