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();
}