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

[SOLUCIONADO] Ejecucion de consulta sqlserver no funciona en JAVA

Estas en el tema de Ejecucion de consulta sqlserver no funciona en JAVA en el foro de Java en Foros del Web. Buenas, Me estoy rompiendo la cabeza intentando resolver este problema. tengo este código: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Java: Ver original //           ...
  #1 (permalink)  
Antiguo 06/01/2016, 09:01
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Ejecucion de consulta sqlserver no funciona en JAVA

Buenas,

Me estoy rompiendo la cabeza intentando resolver este problema. tengo este código:

Código Java:
Ver original
  1. //            sql = "select p.igr_id,a.al_id,a.ubi_id,p.pro_itemname,pro_itemcode,p.pro_unidad,pro_color,d.deta_id,d.deta_cantidadsolicitada, \n" +
  2. //                    "p.pro_descripcion, p.pro_genero, p.pro_talla, p.pro_logo,p.pro_material,p.pro_vidautil,a.al_cantidad,a.al_costo,tr.trp_nombre,\n" +
  3. //                    "case when exists \n" +
  4. //                    "(select * from tab_detalleasignacion di \n" +
  5. //                    "join tab_solicitud si on si.sol_id = di.sol_id \n" +
  6. //                    "join tab_almacen ai on ai.al_id = di.al_id join tab_producto pin on pin.pro_id = ai.pro_id\n" +
  7. //                    "where pin.igr_id = p.igr_id and si.usu_idempleado = "+usu_id+" and di.deta_estadoprenda = 1 and not exists (\n" +
  8. //                    " select * from tab_detalleasignacion d2 \n" +
  9. //                    " join tab_solicitud s2 on s2.sol_id = d2.sol_id \n" +
  10. //                    " join tab_almacen a2 on a2.al_id = d2.al_id join tab_producto p2 on p2.pro_id = a2.pro_id\n" +
  11. //                    " where p2.igr_id = p.igr_id and s2.usu_idempleado = "+usu_id+" and d2.deta_estadoprenda = 2)\n" +
  12. //                    ") then 1\n" +
  13. //                    "else 0 end restriccion\n" +
  14. //                    "from tab_detalleasignacion d \n" +
  15. //                    "JOIN tab_almacen a on a.al_id = d.al_id \n" +
  16. //                    "JOIN tab_producto p on p.pro_id = a.pro_id\n" +
  17. //                    "JOIN tab_tiporopaprenda tr ON a.trp_id = tr.trp_id\n" +
  18. //                    "JOIN tab_solicitud s on s.sol_id = d.sol_id\n" +
  19. //                    "where d.deta_estadoprenda = 1 AND a.al_estado = 1  and d.sol_id= "+ idsol;
  20.            
  21.             sql = "select p.igr_id,a.al_id,a.ubi_id,p.pro_itemname,pro_itemcode,p.pro_unidad,pro_color,d.deta_id,d.deta_cantidadsolicitada, \n" +
  22. "p.pro_descripcion, p.pro_genero, p.pro_talla, p.pro_logo,p.pro_material,p.pro_vidautil,a.al_cantidad,a.al_costo,tr.trp_nombre,\n" +
  23. "case when \n" +
  24. "   ((select COUNT(p3.igr_id) total from tab_detalleasignacion d3 join tab_almacen a3 on a3.al_id = d3.al_id join tab_producto p3 on p3.pro_id = a3.pro_id\n" +
  25. "   join tab_solicitud s3 on d3.sol_id = s3.sol_id join tab_usuariohistorial h3 on h3.ush_id = s3.usu_idempleado \n" +
  26. "   where s3.usu_idempleado = "+usu_id+" and p3.igr_id = p.igr_id and d3.deta_estadoprenda = 2 group by p3.igr_id) \n" +
  27. "   < " +
  28. "   (select rt3.u_cantidad from tab_detalleasignacion d3 join tab_almacen a3 on a3.al_id = d3.al_id join tab_producto p3 on p3.pro_id = a3.pro_id\n" +
  29. "   join tab_solicitud s3 on d3.sol_id = s3.sol_id join tab_usuariohistorial h3 on h3.ush_id = s3.usu_idempleado \n" +
  30. "   join tab_areatrabajocargo at3 on at3.car_id = h3.car_id\n" +
  31. "   join tab_ropatrabajo rt3 on rt3.tpe_id = at3.tpe_id and rt3.u_item = p3.pro_itemcode\n" +
  32. "   where s3.usu_idempleado = "+usu_id+" and p3.igr_id = p.igr_id and d3.deta_estadoprenda = 2))\n" +
  33. "then 1" +
  34. "else " +
  35. "   case when exists \n" +
  36. "   (select * from tab_detalleasignacion di \n" +
  37. "   join tab_solicitud si on si.sol_id = di.sol_id \n" +
  38. "   join tab_almacen ai on ai.al_id = di.al_id join tab_producto pin on pin.pro_id = ai.pro_id\n" +
  39. "   where pin.igr_id = p.igr_id and si.usu_idempleado = "+usu_id+" and di.deta_estadoprenda = 1 and not exists (\n" +
  40. "       select * from tab_detalleasignacion d2 \n" +
  41. "       join tab_solicitud s2 on s2.sol_id = d2.sol_id \n" +
  42. "       join tab_almacen a2 on a2.al_id = d2.al_id join tab_producto p2 on p2.pro_id = a2.pro_id\n" +
  43. "       where p2.igr_id = p.igr_id and s2.usu_idempleado = "+usu_id+" and d2.deta_estadoprenda = 2)\n" +
  44. "   ) then 1\n" +
  45. "   else 0\n" +
  46. "   end\n" +
  47. "end restrinccion\n" +
  48. "from tab_detalleasignacion d \n" +
  49. "JOIN tab_almacen a on a.al_id = d.al_id \n" +
  50. "JOIN tab_producto p on p.pro_id = a.pro_id\n" +
  51. "JOIN tab_tiporopaprenda tr ON a.trp_id = tr.trp_id\n" +
  52. "JOIN tab_solicitud s on s.sol_id = d.sol_id\n" +
  53. "where d.deta_estadoprenda = 1 AND a.al_estado = 1  and d.sol_id= "+idsol;
  54.            
  55.             logger.info("despues de asignar: "+sql);
  56.             PreparedStatement pst = this.getCn().prepareCall(sql);
  57.             st = pst.executeQuery();
Dejo la primera forma comentada (que si funciona pero no arroja los datos que necesito) y la segunda (no funciona pero ejecuto la consulta genera en el log y si arroja los datos que necesito).

Si copio la consulta de la segunda forma al sqlserver y lo ejecuto SI FUNCIONA, pero en JAVA (trabajo con JSF) me dice que no existen registros. Los campos enviados son identicos entre la primera y la segunda forma. Por que la segunda forma no funciona.

AYUDA POR FAVOR
  #2 (permalink)  
Antiguo 06/01/2016, 09:22
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Ejecucion de consulta sqlserver no funciona en JAVA

Buenas,

Si tomas la consulta generada en:
logger.info("despues de asignar: "+sql);
Y la ejecutas dices que si funciona?

En ese caso lo unico que se me ocurre es que desde java te este conectando a otra base de datos o otra instancia de SQL Server distinta.

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 06/01/2016, 09:33
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Respuesta: Ejecucion de consulta sqlserver no funciona en JAVA

Gracias por responder Profesor_Falken,

Da esa impresión pero no es así solo tengo una conexion a una BD y si te fijas hago el juego de comentar y descomentar las consultas.

Sin embargo encontre algo muy interesante en las pruebas que voy realizando para identificar el error. Tengo un "case when" para obtener un dato importante lo interesante es que el case when está anidado es decir:
Cita:
select campo1,campo2,
case when condicion
then 1
else
case when condicion then 1 else 0 end
end
restrinccion
pues resulta que si elimino el case when padre si funciona.

cualquier idea o comentario me ayudaría. GRACIAS
  #4 (permalink)  
Antiguo 06/01/2016, 10:37
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Ejecucion de consulta sqlserver no funciona en JAVA

Hola:

En las líneas 33 y 34 tienes esto

"then 1" +
"else " +

si coges las cadenas y las sumas, no hay ninguna separación entre el 1 y el else, la cadena sumada queda así

"then 1else "

que sintácticamente está mal.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 06/01/2016, 10:40
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Respuesta: Ejecucion de consulta sqlserver no funciona en JAVA

mmmmm, Está muy raro esto. pues ahora uso esta simple consulta:
Cita:
sql = "select p.igr_id,a.al_id,a.ubi_id,p.pro_itemname,pro_itemc ode,p.pro_unidad,pro_color,d.deta_id,d.deta_cantid adsolicitada, \n" +
"p.pro_descripcion, p.pro_genero, p.pro_talla, p.pro_logo,p.pro_material,p.pro_vidautil,a.al_cant idad,a.al_costo,tr.trp_nombre,0 restrinccion \n" +
"from tab_detalleasignacion d \n" +
"JOIN tab_almacen a on a.al_id = d.al_id \n" +
"JOIN tab_producto p on p.pro_id = a.pro_id\n" +
"JOIN tab_tiporopaprenda tr ON a.trp_id = tr.trp_id\n" +
"JOIN tab_solicitud s on s.sol_id = d.sol_id\n" +
"where d.deta_estadoprenda = 1 AND a.al_estado = 1 and d.sol_id= "+idsol;
e igual no funciona.

Trabajo con Netbeans y uso el glassfish 4.1 del propio netbeans será un error del glassfish? o netbeans. revisé el log de glassfih pero no me dice nada. será un error de java, virus? bueno trabajo con windows7 y la verdad no sería raro.
  #6 (permalink)  
Antiguo 06/01/2016, 10:46
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Respuesta: Ejecucion de consulta sqlserver no funciona en JAVA

Gracias chuidiang,

Muy buena tu observación pero no es ese el problema, parece un problema externo a la aplicación, provaré importandolo a linux, haber como me va.
  #7 (permalink)  
Antiguo 06/01/2016, 16:10
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Respuesta: Ejecucion de consulta sqlserver no funciona en JAVA

Pues el error es el mismo, tengo estos dos códigos:
Cita:
sql = "select p.igr_id,a.al_id,a.ubi_id,p.pro_itemname,pro_itemc ode,p.pro_unidad,pro_color,d.deta_id,d.deta_cantid adsolicitada, \n" +
"p.pro_descripcion, p.pro_genero, p.pro_talla, p.pro_logo,p.pro_material,p.pro_vidautil,a.al_cant idad,a.al_costo,tr.trp_nombre,0 restriccion\n" +
"from tab_detalleasignacion d \n" +
"JOIN tab_almacen a on a.al_id = d.al_id \n" +
"JOIN tab_producto p on p.pro_id = a.pro_id\n" +
"JOIN tab_tiporopaprenda tr ON a.trp_id = tr.trp_id\n" +
"JOIN tab_solicitud s on s.sol_id = d.sol_id\n" +
"where d.deta_estadoprenda = 1 AND a.al_estado = 1 and d.sol_id= "+ idsol;

sql = "select p.igr_id,a.al_id,a.ubi_id,p.pro_itemname,pro_itemc ode,p.pro_unidad,pro_color,d.deta_id,d.deta_cantid adsolicitada, \n" +
"p.pro_descripcion, p.pro_genero, p.pro_talla, p.pro_logo,p.pro_material,p.pro_vidautil,a.al_cant idad,a.al_costo,tr.trp_nombre,0 restrinccion \n" +
"from tab_detalleasignacion d \n" +
"JOIN tab_almacen a on a.al_id = d.al_id \n" +
"JOIN tab_producto p on p.pro_id = a.pro_id\n" +
"JOIN tab_tiporopaprenda tr ON a.trp_id = tr.trp_id\n" +
"JOIN tab_solicitud s on s.sol_id = d.sol_id\n" +
"where d.deta_estadoprenda = 1 AND a.al_estado = 1 and d.sol_id= "+idsol;
Que no difieren en nada, según yo, pero cuando ejecuto con la primera consulta si funciona, ejecuto con la segunda NO FUNCIONA.

Lo importé en linux (ubuntu) y el error es el mismo, alguna idea de lo que pueda estás fallando?
  #8 (permalink)  
Antiguo 07/01/2016, 02:14
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Ejecucion de consulta sqlserver no funciona en JAVA

Buenas,

Si difieren. En uno pones restriccion y en el otro restrinccion

Si no estas viendo los errores SQL que se producen supongo que es porque estas ignorando completamente las excepciones, lo cual es muy muy mala idea.

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #9 (permalink)  
Antiguo 07/01/2016, 07:51
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 3 meses
Puntos: 12
Respuesta: Ejecucion de consulta sqlserver no funciona en JAVA

Puff, que increible casi un día con este problema por un error mio.

Gracias Profesor_Falken

Etiquetas: ejecucion, 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 09:27.