私は次のコードを持っています:
try (Connection connection = getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(someSql)) {//stuff}
ここで接続がnullでないことを確認するにはどうすればよいですか?
また、次のように PreparedStatement を返すメソッドを取得しました。
private PreparedStatement getPreparedStatement(Connection connection)
throws SQLException {
PreparedStatement preparedStatement = connection.prepareStatement(SQL);
preparedStatement.setString(1, "someString");
return preparedStatement;
}
これは、リソースで次の try を使用するメソッド内で呼び出されます。
try (Connection connection = getConnection();
PreparedStatement preparedStatement =
getPreparedStatement(connection)) {//stuff}
ここで、プリペアド ステートメントはリソースの試行で開始されるため、自動的に閉じられると想定します。しかし、SonarCloud は、getPreparedStatement メソッドでリソースを試して使用するか、finally ブロックでその PreparedStatement を閉じる必要があると言っています。これは SonarCloud による間違った発見ですか、それとももっと良い方法がありますか?