我如何在 SonarCloud 上解决这个问题?
How can I resolve this issue on SonarCloud?
使用 SonarCloud
我得到这个 bug:
Use try-with-resources or close this "ResultSet" in a "finally" clause
这是以下代码:
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;
}
你可以这样做:
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;
}
结构如下:
try (ResultSet resultSet = statement.getGeneratedKeys()) {
if (resultSet.next()) {
return resultSet.getLong(1);
}
}
等于:
ResultSet resultSet = statement.getGeneratedKeys()
try {
if (resultSet.next()) {
return resultSet.getLong(1);
}
} finally {
if (resultSet != null) {
resultSet.close()
}
}
使用 SonarCloud
我得到这个 bug:
Use try-with-resources or close this "ResultSet" in a "finally" clause
这是以下代码:
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;
}
你可以这样做:
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;
}
结构如下:
try (ResultSet resultSet = statement.getGeneratedKeys()) {
if (resultSet.next()) {
return resultSet.getLong(1);
}
}
等于:
ResultSet resultSet = statement.getGeneratedKeys()
try {
if (resultSet.next()) {
return resultSet.getLong(1);
}
} finally {
if (resultSet != null) {
resultSet.close()
}
}