Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/01/2009, 03:31
BORJACONIL
 
Fecha de Ingreso: marzo-2008
Ubicación: Cádiz, España
Mensajes: 89
Antigüedad: 16 años, 10 meses
Puntos: 0
Problemas con switch y variables de sesion

Buenas a todos. Lo que ocurre es que al switch le paso como variable, una variable de sesion que almacena el tipo de busqueda (exacta, contiene o empieza por).

Este es el código:

Código PHP:
try 
{
        
conexion DriverManager.getConnection(
                
"jdbc:mysql://localhost/cartografia""root",
                
"analiter");
        
Statement st conexion.createStatement();
        switch (
sesion.getAttribute("busqueda"))
        {
            case 
Contiene:
            {
                
System.out.println("Debe de ser Contiene: "+sesion.getAttribute("busqueda"));
                
rs st.executeQuery("select * from mapas m,signaturasoriginales s,materias mat,lugargeosec l,autores a WHERE "
                        
+" m.mapaid=s.mapaid AND "
                        
+" m.materiaid=mat.materiaid AND"
                        
+" m.mapaid=l.mapaid AND"
                        
+" m.mapaid=a.mapaid AND" 
                        
+" m.signatura LIKE '%"
                        
sesion.getAttribute("tematica")
                        + 
"%' OR  s.signaturaoriginal LIKE '%"
                        
sesion.getAttribute("tematica")
                        + 
"%' OR m.lugargeografico LIKE '%"
                        
sesion.getAttribute("geografica")
                        + 
"%' OR l.lugar LIKE '%"
                        
sesion.getAttribute("geografica")
                        + 
"%' OR mat.materia LIKE '%"
                        
sesion.getAttribute("tematica")
                        + 
"%' AND a.autor='"
                        
sesion.getAttribute("autor")
                        + 
"'  OR m.fecha='"
                        
sesion.getAttribute("cronologica")
                        + 
"'");
                                            break;

            }
            case 
Exacta:
            {
                
System.out.println("Debe de ser Exacta: "+sesion.getAttribute("busqueda"));
                
rs st.executeQuery("select * from mapas m,signaturasoriginales s,materias mat,lugargeosec l,autores a WHERE "
                        
+" m.mapaid=s.mapaid AND "
                        
+" m.materiaid=mat.materiaid AND"
                        
+" m.mapaid=l.mapaid AND"
                        
+" m.mapaid=a.mapaid AND"
                        
+" m.signatura='"
                        
sesion.getAttribute("tematica")
                        + 
"' OR s.signaturaoriginal='"
                        
sesion.getAttribute("tematica")
                        + 
"' OR m.lugargeografico='"
                        
sesion.getAttribute("geografica")
                        + 
"' OR l.lugar='"
                        
sesion.getAttribute("geografica")
                        + 
"' OR mat.materia='"
                        
sesion.getAttribute("tematica")
                        + 
"' AND a.autor='"
                        
sesion.getAttribute("autor")
                        + 
"' OR m.fecha='"
                        
sesion.getAttribute("cronologica")
                        + 
"'");
                                          break;
            }
            case 
EmpiezaPor:
            {
                
System.out.println("Debe de ser Empieza Por: "+sesion.getAttribute("busqueda"));
                
rs st.executeQuery("select * from mapas m,signaturasoriginales s,materias mat,lugargeosec l,autores a WHERE "
                        
+" m.mapaid=s.mapaid AND "
                        
+" m.materiaid=mat.materiaid AND"
                        
+" m.mapaid=l.mapaid AND"
                        
+" m.mapaid=a.mapaid AND" 
                        
+" m.signatura LIKE '%"
                        
sesion.getAttribute("tematica")
                        + 
"' OR s.signaturaoriginal LIKE '%"
                        
sesion.getAttribute("tematica")
                        + 
"' OR m.lugargeografico LIKE '%"
                        
sesion.getAttribute("geografica")
                        + 
"' OR l.lugar LIKE '%"
                        
sesion.getAttribute("geografica")
                        + 
"' OR mat.materia LIKE '%"
                        
sesion.getAttribute("tematica")
                        + 
"' AND a.autor='"
                        
sesion.getAttribute("autor")
                        + 
"' OR m.fecha='"
                        
sesion.getAttribute("cronologica")
                        + 
"'");
                                          break;
                
            }
        }
        
        
RowSetDynaClass resultSet = new RowSetDynaClass(rsfalse);
        
request.setAttribute("registros"resultSet);
    }     
    catch (
Exception e
    {
        
out.println("Error de conexion con la base de datos: " e);
    } 
Cuando le damos a buscar, me lanza este error:

Código PHP:
org.apache.jasper.JasperExceptionNo se puede compilar la clase para JSP

Ha tenido lugar un error en la l�nea: 55 en el archivo jsp: /BusquedaEnTablas.jsp
Cannot switch on a value of type ObjectOnly int values or enum constants are permitted
52
:                 "jdbc:mysql://localhost/cartografia""root",
53:                 "analiter");
54:         Statement st conexion.createStatement();
55:         switch (sesion.getAttribute("busqueda"))
56:         {
57:             case Contiene:
58:             { 
Me dice que solo puedo usar valores enteros o enumeraciones. Como lo puedo solucionar????

Lo he probado con if, pero siempre me entra en dos tipos de consultas.