Tema: duda con JSP
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/07/2014, 09:09
lucho248
 
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