我试图从Java访问postgresql数据库。我对ResultSet有一些问题,我无法弄清楚原因
这是调用DB的方法。尝试访问while(rs.next())
时抛出异常public Usuario buscarUsuario(String nombre){
String sql = "SELECT * from usuario WHERE nombre_usuario = '"+nombre+"'";
BaseDeDatos.getInstancia().establecerConexion();
ResultSet rs = BaseDeDatos.getInstancia().ejecutarQuery(sql);
Usuario us= new Usuario();
try {
while(rs.next()){
us.setNombreUsuario(rs.getObject(1).toString());
us.setContrasena(rs.getObject(2).toString());
us.setActivo(rs.getBoolean(3));
}
} catch (SQLException e) {
e.printStackTrace();
}
BaseDeDatos.getInstancia().cerrarConexion();
return us;
}
这就是BaseDeDatos.getInstancia()。ejecutarQuery(sql)所做的
public ResultSet ejecutarQuery(String sql){
try{
stmt = conexion.createStatement();
rsst=stmt.executeQuery(sql);
stmt.close();
}
catch (Exception e){
System.err.println( e.getClass().getName()+": "+ e.getMessage() );
System.exit(0);
}
return rsst;
}
例外:
org.postgresql.util.PSQLException:此ResultSet已关闭。 at org.postgresql.jdbc2.AbstractJdbc2ResultSet.checkClosed(AbstractJdbc2ResultSet.java:2852) at org.postgresql.jdbc2.AbstractJdbc2ResultSet.next(AbstractJdbc2ResultSet.java:1890) 在com.CBTD.database.TablaUsuario.buscarUsuario(TablaUsuario.java:20) 在com.CBTD.logica.LoginExpert.validarUsuario(LoginExpert.java:11) 在com.CBTD.logica.prueba.main(prueba.java:40)
我一直在网上搜索,但我无法找到答案。它让我发疯了。请,任何帮助都是有用的。