gpt4 book ai didi

java - 可能无法清理 java.sql.ResultSet 、 Statement。清理资源的义务并未解除

转载 作者:行者123 更新时间:2023-12-01 15:32:09 26 4
gpt4 key购买 nike

我在我的一个 java 文件中使用了 FindBugs 工具,并从工具中收到了下面提到的错误消息。

我在运行我的应用程序时确实发现了这个提到的问题。我已将此发布于 Getting TDS driver - java.lang.NullPointerException. this exception is not consistent .

我无法弄清楚为什么会出现这种情况。

1.)方法 com.vtech.tdpms.dao.ClientAuthenticationDAO.authenticateClient(InputBean) 可能无法清理 java.sql.ResultSet
清理在 ClientAuthenticationDAO.java 创建的资源的义务:[第 44 行] 未解除

引用类型java.sql.ResultSet
剩余 1 种义务类型
路径在 ClientAuthenticationDAO.java 处继续:[第 45 行]
路径在 ClientAuthenticationDAO.java 处继续:[第 46 行]
路径在 ClientAuthenticationDAO.java 处继续:[第 61 行]
剩余义务:{Statement x 1, ResultSet x 1}

2.)方法 com.vtech.tdpms.dao.ClientAuthenticationDAO.authenticateClient(InputBean) 可能无法清理 java.sql.Statement
清理在 ClientAuthenticationDAO.java:[第 38 行] 创建的资源的义务未解除
引用类型java.sql.Statement
剩余 1 种义务类型
路径在 ClientAuthenticationDAO.java 处继续:[第 39 行]
路径在 ClientAuthenticationDAO.java 处继续:[第 40 行]
路径在 ClientAuthenticationDAO.java 处继续:[第 41 行]
路径在 ClientAuthenticationDAO.java 处继续:[第 42 行]
路径在 ClientAuthenticationDAO.java 处继续:[第 43 行]
路径在 ClientAuthenticationDAO.java 处继续:[第 44 行]
路径在 ClientAuthenticationDAO.java 处继续:[第 45 行]
路径在 ClientAuthenticationDAO.java 处继续:[第 46 行]
路径在 ClientAuthenticationDAO.java 处继续:[第 61 行]
剩余义务:{Statement x 1, ResultSet x 1}

Java 代码 -

 public class ClientAuthenticationDAO extends DAOUtil {       
private static LogManager LOG = new LogManager(ClientAuthenticationDAO.class);

public boolean authenticateClient(InputBean objInputBean) throws SQLException { // line 30
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
boolean isAuthenticationSuccess = false;

try {
conn = getConnection();
ps = conn.prepareStatement(ClientAuthenticationQueryUtil.AUTHENTICATE_CLIENT); // line 38
ps.setString(1, objInputBean.getUsername()); // line 39
ps.setString(2, objInputBean.getPassword()); // line 40
ps.setString(3, objInputBean.getCompanyCode()); // line 41
rs = ps.executeQuery(); // line 42

while(rs.next()) { // line 44
if(GenTools.isEmpty(objInputBean.getClientId())){ // line 45
objInputBean.setClientId(rs.getString("login_xid")); // line 46
}
objInputBean.setAdminId(rs.getInt("admin_id"));
objInputBean.setLoginUserPID(rs.getInt("login_user_pid"));
objInputBean.setUserType(rs.getString("user_type"));
isAuthenticationSuccess = true;
}

} catch (SQLException sqlExp) {
sqlExp.printStackTrace();
LOG.fatal(sqlExp);
throw sqlExp;
} finally {
DataBaseUtil.close(conn, ps, rs);
}

return isAuthenticationSuccess;
}

}

最佳答案

我们在声纳中也有相同的消息。这是因为 findbugs 不知道 DataBaseUtil.close(conn, ps, rs);实际上关闭了你的资源。 Findbugs 在同一方法中搜索资源的实际调用。

关于java - 可能无法清理 java.sql.ResultSet 、 Statement。清理资源的义务并未解除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9441833/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com