我在我的一个java文件中使用了FindBugs工具,并从工具中得到了下面提到的错误信息。可能无法清理java.sql.ResultSet,Statement。清理资源的义务没有完成
我在运行我的应用程序时发现了这个问题。我已发布此Getting TDS driver - java.lang.NullPointerException. this exception is not consistent。
我无法弄清楚为什么会出现这种情况。
1)方法com.vtech.tdpms.dao.ClientAuthenticationDAO.authenticateClient(InputBean)可能无法清理java.sql.ResultSet中
义务清理在ClientAuthenticationDAO.java:[line 44创建的资源]是不放电
参考类型java.sql.ResultSet中
1剩余
路径义务的实例类型继续以ClientAuthenticationDAO.java:[line 45]
路径继续在ClientAuthenticationDAO.java:[line 46]
路径继续在ClientAuthenticationD AO.java:[line 61]
剩余义务:{声明X 1,结果集X 1}
2.)方法com.vtech.tdpms.dao.ClientAuthenticationDAO.authenticateClient(InputBean)可能无法清理的java .sql.Statement
义务清理在ClientAuthenticationDAO.java:[line 38创建的资源]不被排出
参考类型java.sql.Statement中
1剩余
路径义务的实例类型继续到ClientAuthenticationDAO.java :[line 39]
路径继续在ClientAuthenticationDAO.java:[line 40]
路径继续在ClientAuthenticationDAO.java:[line 41]
路径继续在ClientAuthenticationDAO.java:[line 42]
路径继续在ClientAuthenticationDAO.java:[line 43]
路径继续到ClientAuthenticationDAO.java: [线44]
路径继续在ClientAuthenticationDAO.java:[line 45]
路径继续在ClientAuthenticationDAO.java:[line 46]
路径继续在ClientAuthenticationDAO.java:[line 61]
剩余义务:{声明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;
}
}
如果您在finally块中手动关闭ps和rs,会发生什么情况?即分别调用'ps.close()'和'rs.close()'。 – 2012-02-25 06:32:52
为什么这个问题被标记为'NullPointerException'?这个标签似乎指的是另一个问题。 – tom 2012-02-25 07:56:22
执行此代码时,获取NullPointerException - 请参阅 - http://stackoverflow.com/q/9411706/147075 – Santosh 2012-02-25 08:01:11