【发布时间】:2021-12-09 09:34:40
【问题描述】:
我正在尝试从基于用户 ID 的表中获取电子邮件。但是,SonarQube 一直在抱怨我已经拥有的 Use try-with-resources or close this "PreparedStatement" in a "finally" clause。
我已经查看了here 和其他地方的答案,但这些解决方案对我不起作用。
代码如下:
public String getUserEmail(String id) throws SQLException {
String emailAddress = null;
String sql = "select email from my_table where id=?";
PreparedStatement preparedStatement = this.connection.prepareStatement(sql);
preparedStatement.setString(1, id);
try {
ResultSet rs = preparedStatement.executeQuery();
while (rs.next()) {
emailAddress = rs.getString("email");
}
} catch(SQLException e) {
throw new TuringClientException("Failed to getUserEmail. ", e);
} finally {
preparedStatement.close();
}
return emailAddress;
}
我也尝试将 PreparedStatement preparedStatement = this.connection.prepareStatement(sql) 包装在另一个 try catch 或嵌套 try-catch 中,但这些尝试都不起作用。
【问题讨论】:
标签: java sql sonarqube prepared-statement