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
<%@page import="java.sql.ResultSet"%> <%@page import="java.sql.PreparedStatement"%> <%@page import="java.sql.DriverManager"%> <%@page import="java.sql.Connection"%> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <% //URL ejemplo: http://localhost:83/AppCooperativaDWP/CtaCtePadron.jsp?padron_cuit11=30708784407 //recupero el valor pasado por parametro CUIT. String param = request.getParameter("padron_cuit11"); //nombre del parametro. try{ Class.forName("com.sybase.jdbc3.jdbc.SybDriver").newInstance(); String url, user, pass; //puertos 5000, 2638 url = "jdbc:sybase:Tds:xxx.xxx.xxx.xxx:2638/miDB"; user = "dba"; pass = "sql"; Connection cn = DriverManager.getConnection(url, user, pass); //parametro PreparedStatement cmd = cn.prepareStatement("select * from ctacte_padron where padron_catego = 3 and padron_cuit11 = ?;"); cmd.setString(1, param); ResultSet rs = cmd.executeQuery(); while (rs.next()){ out.print(rs.getString("padron_apelli")+", "+ rs.getString("padron_nombre")); } rs.close(); cmd.close(); cn.close(); }catch (Exception e){ out.print(e.getMessage()); } %>
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
<%@page import="java.sql.ResultSet"%> <%@page import="java.sql.PreparedStatement"%> <%@page import="java.sql.DriverManager"%> <%@page import="java.sql.Connection"%> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <% //URL ejemplo: http://localhost:82/AppCooperativaDWP/FacArticulos.jsp?art_barras=7792900006857 String param = ""; if (request.getParameter("art_barras") == null){ param = request.getParameter("art_barras"); //nombre del parametro. }else{ System.out.print("parametro nulo"); } try{ System.out.print(param); Class.forName("com.sybase.jdbc3.jdbc.SybDriver").newInstance(); String url, user, pass; //puertos 5000, 2638 url = "jdbc:sybase:Tds:xxx.xxx.xxx.xxx:2638/miDB"; user = "dba"; pass = "sql"; Connection cn = DriverManager.getConnection(url, user, pass); //parametro PreparedStatement cmd = cn.prepareStatement("select * from fac_articulos where art_barras = ?;"); cmd.setString(1, param); ResultSet rs = cmd.executeQuery(); while (rs.next()){ //el nombre pasado, deben ser las columnas de la tablas en la base. out.print(rs.getString("art_barras")+", "+ rs.getString("art_descri")+", "+ rs.getString("art_existencia")); } // PreparedStatement cmd = cn.prepareStatement("select * from fac_articulos;"); // ResultSet rs = cmd.executeQuery(); // while (rs.next()){ //el nombre pasados, deben ser las columnas de la tablas en la base. // out.print(rs.getString("art_barras")+", "+ // rs.getString("art_codigo")+", "+ // rs.getString("art_descri")); // } rs.close(); cmd.close(); cn.close(); }catch (Exception e){ out.print(e.getMessage()); } %>
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
jul 29, 2014 12:12:12 PM org.apache.coyote.AbstractProtocol start INFORMACIÓN: Starting ProtocolHandler ["ajp-bio-8009"] jul 29, 2014 12:12:12 PM org.apache.catalina.startup.Catalina start INFORMACIÓN: Server startup in 3272 ms parametro nulo