0

私は次のコードを持っています:

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 による間違った発見ですか、それとももっと良い方法がありますか?

4

2 に答える 2