Foros del Web » Programación para mayores de 30 ;) » Java »

Problema entre JDBC y Resultset

Estas en el tema de Problema entre JDBC y Resultset en el foro de Java en Foros del Web. Tengo una logica de negocio donde en ciertos momentos recupera datos de una base de datos en MySQL embebida en NETBeans (con el conector JAR ...
  #1 (permalink)  
Antiguo 11/01/2012, 14:32
 
Fecha de Ingreso: marzo-2011
Ubicación: Mendoza
Mensajes: 15
Antigüedad: 13 años, 1 mes
Puntos: 0
Exclamación Problema entre JDBC y Resultset

Tengo una logica de negocio donde en ciertos momentos recupera datos de una base de datos en MySQL embebida en NETBeans (con el conector JAR de MySQL). Genero la SQL perfectamente y recupero muchos objetos de la BD de manera perfecta, pero en algunos momentos genero la SQL normalmente pero el resultset me devuelve "null" y no se la razon, porque si ejecuto la sentencia SQL generada en la pestaña "Servicios" sobre la tabla deseada, el resultado es que abajo me muestra lo que deberia recuperar la logica de negocio, y que NO lo hace.
Ademas, como es un proyecto de la facultad, hemos desarrollado un framework de persistencia que se conecta con la logica de negocio y recupera informacion de la BD. El tema es que el framework funciona perfecto porque muchos objetos los trae, pero con algunos tira ese "null" digamos..

Alguna idea???

Gracias

Última edición por luchos297; 11/01/2012 a las 14:53
  #2 (permalink)  
Antiguo 11/01/2012, 15:24
 
Fecha de Ingreso: noviembre-2009
Mensajes: 40
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: Problema entre JDBC y Resultset

Has intentado poner algun tipo de log/print para revisar la consulta que estas realizando sobre la DB??? Cosa de despues probarla manualmente?
A mi cuando me pasa que el resultset esta null es porque mi query esta mala. (y por como lo tengo construido, capturo el error en el catch y me dice "error en el sql" etc etc)

Saludos!
  #3 (permalink)  
Antiguo 11/01/2012, 16:47
 
Fecha de Ingreso: marzo-2011
Ubicación: Mendoza
Mensajes: 15
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Problema entre JDBC y Resultset

guarda el resultset en un "boolean" y lo mostraba por pantalla luego. Salia "false" y eso indica que adentro no tiene nada, es decir, no trajo nada de la base de datos.

Lo mas raro es que la SQL que genero, la corro desde la bd directamente y me tira el resultado que busco... no se...
  #4 (permalink)  
Antiguo 11/01/2012, 17:25
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 1 mes
Puntos: 71
Respuesta: Problema entre JDBC y Resultset

Es posible que el puerto que usa MySql este ocupado con otro proceso. Este tu lo puedes cambiar y por defecto es 3306.
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #5 (permalink)  
Antiguo 11/01/2012, 19:40
 
Fecha de Ingreso: noviembre-2009
Mensajes: 40
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: Problema entre JDBC y Resultset

Has seguido bajando de niveles con las pruebas? por ejemplo tienes algo como esto imagino

ResultSet rs = ConexionDB.getStat().executeQuery(consulta);

Esta operación se cae a algun catch??
Como estas haciendo la llamada específicamente? un sentencia en duro? llamas a un procedimiento? etc

Saludos!
  #6 (permalink)  
Antiguo 11/01/2012, 22:43
 
Fecha de Ingreso: marzo-2011
Ubicación: Mendoza
Mensajes: 15
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Problema entre JDBC y Resultset

Y como hago para cambiar el puerto??

Cita:
@Override
public ArrayList MaterializarCriterio(Criterio criterios){
try {
String sql = ArmarConsultaSQLSelectCriterio(criterios);
ResultSet resultSet = FachadaPersistenciaInterna.getInstancia().conexion .createStatement().executeQuery(sql);
ArrayList agente = ConvertirRegistroAObjeto(resultSet);
return agente;
}
catch (SQLException ex) {
Logger.getLogger(IntermediarioPersistenciaRelacion alPaciente.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
}
Si, tengo un try y un catch. Como es un arrayList me dicen que el "index es 0", eso indica que el arraylist viene vacio por lo cual no recupera nada del resulset (lo debuguie con F7, paso a paso)..
  #7 (permalink)  
Antiguo 12/01/2012, 03:44
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Problema entre JDBC y Resultset

El index lo que indica es la posición dentro del ArrayList. Va de 0 hasta la longitud del ArrayList - 1.

Para los result sets...

while (resultSet.hasNext()) {
ArrayList agente = ConvertirRegistroAObjeto(resultSet.next());
}
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #8 (permalink)  
Antiguo 12/01/2012, 09:22
 
Fecha de Ingreso: noviembre-2009
Mensajes: 40
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: Problema entre JDBC y Resultset

Consultas:

-Esta sentencia String sql = ArmarConsultaSQLSelectCriterio(criterios); cual es el resultado que obtienes al debugear?? el valor de sql.

-Este metodo te esta retornando un null?? o revisaste las variables locales agente y resultSet para ver como estan?? y si el metodo retorno null, que pinto el log?

saludos!
  #9 (permalink)  
Antiguo 12/01/2012, 16:44
 
Fecha de Ingreso: marzo-2011
Ubicación: Mendoza
Mensajes: 15
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Problema entre JDBC y Resultset

Cita:
El index lo que indica es la posición dentro del ArrayList. Va de 0 hasta la longitud del ArrayList - 1.

Para los result sets...

while (resultSet.hasNext()) {
ArrayList agente = ConvertirRegistroAObjeto(resultSet.next());
}
Eso que vos remarcas lo hago dentro del metodo "ConvertirRegistroAObjeto" y lo hago de esta forma ("while (resultSet.next()) {"). Diferencia de next() a hasNext()???

Cita:
Consultas:

-Esta sentencia String sql = ArmarConsultaSQLSelectCriterio(criterios); cual es el resultado que obtienes al debugear?? el valor de sql.

-Este metodo te esta retornando un null?? o revisaste las variables locales agente y resultSet para ver como estan?? y si el metodo retorno null, que pinto el log?

saludos!
Cuando genero la SQL, se genera correctamente y si la ejecuto desde la BD, me tira la fila que deberia devolver el codigo. Por ejemplo, si ejecuto los metodos me devuelve "SELECT * FROM Marcada WHERE codigoMarcada = 'M08'". Si esa SQL la ejecuto desde la consola de la BD, me muestra el objeto correctamente.
Las variables y todo eso funciona de 10!. El problema esta en que cuando ejecuta la consulta, el motor de la BD no devuelve NADA, como sino exisitiese nada relacionado a ese objeto en la BD. La verdad no entiendo ya..
  #10 (permalink)  
Antiguo 13/01/2012, 04:53
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Problema entre JDBC y Resultset

igual tienes algún nullpointer o alguna otra excepción en el código que no ha sido bien gestionada y por eso se pierde la excepción. ¿Tienes los bloques try catch correctos con un e.printstacktrace() para sacar los errores por consola?

si tienes solo algunos tipos de excepcion... usa el genérico a mayores

catch (SQLException ex) {
Logger.getLogger(IntermediarioPersistenciaRelacion alPaciente.class.getName()).log(Level.SEVERE, null, ex);
return null;
} catch (Exception e) {
// Lo que quieras hacer => logger o e.printstacktrace();
return null;
}
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #11 (permalink)  
Antiguo 17/01/2012, 09:53
 
Fecha de Ingreso: marzo-2011
Ubicación: Mendoza
Mensajes: 15
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Problema entre JDBC y Resultset

Hola, ya probe con eso y no funciona porque "nunca salta" en el try y por ello se ejecuta bien, solo que retorna "nada" porque supuestamente no existe en la BD, cuando si existe y si ejecuto la sql que genera, me lo muestra perfectamente...
  #12 (permalink)  
Antiguo 27/01/2012, 13:11
 
Fecha de Ingreso: marzo-2011
Ubicación: Mendoza
Mensajes: 15
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Problema entre JDBC y Resultset

Alguna, actualize a NETBeans 7.1 y me sigue dando error.. Puede ser la BD?? Recomiendan que monte una con APPServ??
  #13 (permalink)  
Antiguo 27/01/2012, 17:58
 
Fecha de Ingreso: noviembre-2009
Mensajes: 40
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: Problema entre JDBC y Resultset

Mencionaste que estas usando un framework desarrollado por tu facultad, has intentado hacer no se, una clase de prueba que le pegue directamente a la db con tu query? sin framework intermediario, sin capas, etc?

Saludos
  #14 (permalink)  
Antiguo 28/01/2012, 15:00
 
Fecha de Ingreso: marzo-2011
Ubicación: Mendoza
Mensajes: 15
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Problema entre JDBC y Resultset

La verdad que no he probado, voy a ver si funciona. El tema es que la primera vez que busca el objeto X lo encuentra perfecto, pero la segunda vez me tira un "null", muy raro..

Gracias!!

Etiquetas: jar, jdbc, mysql, netbeans, resultset, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:46.