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<%@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 originaljul 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