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

duda con JSP

Estas en el tema de duda con JSP en el foro de Java en Foros del Web. Hola gente, les traigo un problema que tengo, que no se como resolverlo. tengo dos archivos jsp, de los cuales uno funciona bien, y el ...
  #1 (permalink)  
Antiguo 29/07/2014, 09:09
 
Fecha de Ingreso: octubre-2010
Mensajes: 154
Antigüedad: 13 años, 6 meses
Puntos: 5
duda con JSP

Hola gente, les traigo un problema que tengo, que no se como resolverlo.

tengo dos archivos jsp, de los cuales uno funciona bien, y el otro no.
pero uno usa o realiza una consulta (preguntando por un entero en una base SYBASE que si funciona bien), y la otra una consulta preguntando por un varchar (que no me anda).

paso codigo:

Código Javascript:
Ver original
  1. <%@page import="java.sql.ResultSet"%>
  2. <%@page import="java.sql.PreparedStatement"%>
  3. <%@page import="java.sql.DriverManager"%>
  4. <%@page import="java.sql.Connection"%>
  5. <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
  6.     pageEncoding="ISO-8859-1"%>
  7.  
  8. <%
  9. //URL ejemplo: http://localhost:83/AppCooperativaDWP/CtaCtePadron.jsp?padron_cuit11=30708784407
  10. //recupero el valor pasado por parametro CUIT.
  11. String param = request.getParameter("padron_cuit11"); //nombre del parametro.
  12. try{
  13.     Class.forName("com.sybase.jdbc3.jdbc.SybDriver").newInstance();
  14.     String url, user, pass;
  15.     //puertos 5000, 2638
  16.     url = "jdbc:sybase:Tds:xxx.xxx.xxx.xxx:2638/miDB";
  17.     user = "dba";
  18.     pass = "sql";
  19.    
  20.     Connection cn = DriverManager.getConnection(url, user, pass);
  21.  
  22.                                                                                                                     //parametro
  23.     PreparedStatement cmd = cn.prepareStatement("select * from ctacte_padron where padron_catego = 3 and padron_cuit11 = ?;");
  24.     cmd.setString(1, param);
  25.     ResultSet rs = cmd.executeQuery();
  26.    
  27.     while (rs.next()){  
  28.                                     out.print(rs.getString("padron_apelli")+", "+
  29.                     rs.getString("padron_nombre"));
  30.     }
  31.     rs.close();
  32.     cmd.close();
  33.     cn.close();
  34. }catch (Exception e){
  35.     out.print(e.getMessage());
  36. }
  37. %>

esta funciona bien, porque el parametro es un entero.
pero cuando ejecuto este archivo jsp que paso como parametro una cadena no me la ejecuta.

codigo:
Código Javascript:
Ver original
  1. <%@page import="java.sql.ResultSet"%>
  2. <%@page import="java.sql.PreparedStatement"%>
  3. <%@page import="java.sql.DriverManager"%>
  4. <%@page import="java.sql.Connection"%>
  5. <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
  6.     pageEncoding="ISO-8859-1"%>
  7.  
  8. <%
  9. //URL ejemplo: http://localhost:82/AppCooperativaDWP/FacArticulos.jsp?art_barras=7792900006857
  10. String param = "";
  11. if (request.getParameter("art_barras") == null){
  12.     param = request.getParameter("art_barras"); //nombre del parametro.
  13. }else{
  14.     System.out.print("parametro nulo");
  15. }
  16.  
  17. try{
  18.     System.out.print(param);
  19.     Class.forName("com.sybase.jdbc3.jdbc.SybDriver").newInstance();
  20.     String url, user, pass;
  21.     //puertos 5000, 2638
  22.     url = "jdbc:sybase:Tds:xxx.xxx.xxx.xxx:2638/miDB";
  23.     user = "dba";
  24.     pass = "sql";
  25.    
  26.     Connection cn = DriverManager.getConnection(url, user, pass);
  27.                                                                                                                 //parametro
  28.     PreparedStatement cmd = cn.prepareStatement("select * from fac_articulos where art_barras = ?;");
  29.     cmd.setString(1, param);
  30.     ResultSet rs = cmd.executeQuery();
  31.    
  32.     while (rs.next()){ //el nombre pasado, deben ser las columnas de la tablas en la base.
  33.         out.print(rs.getString("art_barras")+", "+
  34.                     rs.getString("art_descri")+", "+
  35.                     rs.getString("art_existencia"));
  36.     }
  37.  
  38. //  PreparedStatement cmd = cn.prepareStatement("select * from fac_articulos;");
  39. //  ResultSet rs = cmd.executeQuery();
  40.    
  41. //  while (rs.next()){  //el nombre pasados, deben ser las columnas de la tablas en la base.
  42. //      out.print(rs.getString("art_barras")+", "+
  43. //                  rs.getString("art_codigo")+", "+
  44. //                  rs.getString("art_descri"));
  45. //  }
  46.    
  47.     rs.close();
  48.     cmd.close();
  49.     cn.close();
  50. }catch (Exception e){
  51.     out.print(e.getMessage());
  52. }
  53. %>

este ultimo archivo jsp me imprime por consola "parametro nulo" y es un codigo de barra existente. El problema lo tengo cuando paso por parametro un STRING.
porque con los enteros no lo tengo a este problema y ya no se que probar.

y si corro ese codigo que esta comentado, (quitando la parte de codigo donde pide levantar el parametro), me muestra sin problema la salida que imprime dentro del "WHILE".-

En sisntesis, no se como tomar el campo pasado como parametro y meterlo en la consulta cuando es una cadena VARCHAR.

Si me pueden indicar donde estoy errando, se los voy a agradecer.
Un abrazo.
Suerte.-

salida por consola:
Código Java:
Ver original
  1. jul 29, 2014 12:12:12 PM org.apache.coyote.AbstractProtocol start
  2. INFORMACIÓN: Starting ProtocolHandler ["ajp-bio-8009"]
  3. jul 29, 2014 12:12:12 PM org.apache.catalina.startup.Catalina start
  4. INFORMACIÓN: Server startup in 3272 ms
  5. parametro nulo
  #2 (permalink)  
Antiguo 29/07/2014, 09:41
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 2 meses
Puntos: 78
Respuesta: duda con JSP

Hola,
prueba a ponerla entre comillas.

Saludos.
  #3 (permalink)  
Antiguo 30/07/2014, 04:45
 
Fecha de Ingreso: octubre-2010
Mensajes: 154
Antigüedad: 13 años, 6 meses
Puntos: 5
Respuesta: duda con JSP

Cita:
Iniciado por ElAthlit Ver Mensaje
Hola,
prueba a ponerla entre comillas.

Saludos.
Hola ElAthlit, si probe hacerlo de esta forma:
Código Java:
Ver original
  1. PreparedStatement cmd = cn.prepareStatement("select * from fac_articulos where art_barras = '?';");
  2.     cmd.setString(1, param);
y no logre buenos resultados.
probe tambien con comillas dobles, y nada.
estoy buscando en internet algun ejemplo, pero no encuentro.
Gracias por tu aporte.
  #4 (permalink)  
Antiguo 30/07/2014, 05:01
 
Fecha de Ingreso: octubre-2010
Mensajes: 154
Antigüedad: 13 años, 6 meses
Puntos: 5
Respuesta: duda con JSP

bueno, esto si que me va a volver loco.
hoy iniciando mi jornada, prendo la pc... corro la aplicación, y anduvo.
un error estupido es en el:
Código Java:
Ver original
  1. //URL ejemplo: http://localhost:82/AppCooperativaDWP/FacArticulos.jsp?art_barras=7792900006857
  2. String param = "";
  3. if (request.getParameter("art_barras") == null){
  4.     param = request.getParameter("art_barras"); //nombre del parametro.
  5. }else{
  6.     System.out.print("parametro nulo");
y que me imprimia "parametro nulo", cambie la condición del IF del "==" a "!=" y me imprimia el parametro por consola, pero ademas me devolvia lo que estaba preguntando en la consulta sql, que es el articulo correspondiente a ese codigo de barras.

la consulta que anduvo quedo asi:
Código Consulta correcta:
Ver original
  1. PreparedStatement cmd = cn.prepareStatement("select * from fac_articulos where art_barras = ?;");
  2.     cmd.setString(1, param);
Gracias.
Saludos.

Etiquetas: jsp, string, valor
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:08.