Reputation: 111
Using SonarCloud
I got this bug:
Use try-with-resources or close this "ResultSet" in a "finally" clause
This is the following code:
public long executeUpdate() throws SQLException {
if (query != null) {
try {
statement.execute();
if (returnGeneratedKeys) {
ResultSet resultSet = statement.getGeneratedKeys();
if (resultSet.next()) {
return resultSet.getLong(1);
}
}
} finally {
statement.close();
connection.close();
}
}
return 0;
}
Upvotes: 0
Views: 377
Reputation: 9136
You may do this:
public long executeUpdate() throws SQLException {
if (query != null) {
try {
statement.execute();
if (returnGeneratedKeys) {
try (ResultSet resultSet = statement.getGeneratedKeys()) {
if (resultSet.next()) {
return resultSet.getLong(1);
}
}
}
} finally {
statement.close();
connection.close();
}
}
return 0;
}
The following structure:
try (ResultSet resultSet = statement.getGeneratedKeys()) {
if (resultSet.next()) {
return resultSet.getLong(1);
}
}
is equal to:
ResultSet resultSet = statement.getGeneratedKeys()
try {
if (resultSet.next()) {
return resultSet.getLong(1);
}
} finally {
if (resultSet != null) {
resultSet.close()
}
}
Upvotes: 2