Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146

    Column not found in alcune query

    Salve ragazzi,

    devo creare una pagina jsp che effettui delle query su una tabella chiamta "persona".
    se eseguo una query del genere: SELECT * FROM PERSONA WHERE codice>1 e quindi una query che mi deve restituire tutti i campi di ogni riga della tabella non ci sono problemi se invece eseguo una query del tipo: SELECT NOME FROM PERSONA WHERE CODICE>1 ottengo l'errore Column not found. DOve sbaglio?

    codice:
    org.apache.jasper.JasperException: An exception occurred processing JSP page /query.jsp at line 62
    
    59:           
    60:           while(rs.next()) 
    61:           { 
    62:               if(rs!=null) out.println( rs.getInt("codice") ); 
    63:               if(rs!=null) out.println( rs.getString("nome") ); 
    64:               if(rs!=null) out.println( rs.getString("cognome") ); 
    65:               if(rs!=null) out.println( rs.getInt("eta") ); 
    
    
    Stacktrace:
    	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:511)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:407)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    
    root cause
    
    javax.servlet.ServletException: java.sql.SQLException: Column not found
    	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:898)
    	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:827)
    	org.apache.jsp.query_jsp._jspService(query_jsp.java:144)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:68)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:376)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    
    root cause
    
    java.sql.SQLException: Column not found
    	sun.jdbc.odbc.JdbcOdbcResultSet.findColumn(Unknown Source)
    	sun.jdbc.odbc.JdbcOdbcResultSet.getInt(Unknown Source)
    	org.apache.jsp.query_jsp._jspService(query_jsp.java:116)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:68)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:376)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    Codice della jsp:

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <title>Tabella Persona - Risultato Query</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
    <link rel="stylesheet" type="text/css" href="index.css">
    </head>
    
    <body>
    	<div id="container">
    		
    			
    		<%@page import="java.sql.*"%> 
          <% 
              Connection connection;// sfrutto la composizione 
              String DbDriver;// La stringa contenente il nome del driver 
              String DbURL;// La stringa contenente la URL del DB 
              String username; // UserID di connessione 
              String password; // Password associata alla username 
     
              connection = null; 
              DbDriver = "sun.jdbc.odbc.JdbcOdbcDriver"; 
              DbURL = "jdbc:odbc:oracleODBC"; 
              username = "amministratore"; 
             password = "tiger"; 
     
              // Carica il Driver del DBMS 
              Class.forName(DbDriver); 
            
            // Apertura connessione 
              connection = DriverManager.getConnection(DbURL, username, password); 
              
            //Prelevo i dati dal form
              String select=new String(request.getParameter("select"));
    		  String from=new String(request.getParameter("from"));
    		  String where=new String(request.getParameter("where"));
    		  String having=new String(request.getParameter("having"));
    		  String testo=new String(request.getParameter("testo"));  
     
              //Esecuzione istruzione SQL 
              Statement st = connection.createStatement(); 
              //PreparedStatement ps = connection.prepareStatement();
              //String SQL = "SELECT * FROM persona order by codice"; 
               String SQL = "SELECT "+select+" FROM "+from+" WHERE "+where+";";
               out.println(SQL);
              
              ResultSet rs = st.executeQuery(SQL); 
              
              
     
              //Elaborazione risultati 
              
              while(rs.next()) 
              { 
                  if(rs!=null) out.println( rs.getInt("codice") ); 
                  if(rs!=null) out.println( rs.getString("nome") ); 
                  if(rs!=null) out.println( rs.getString("cognome") ); 
                  if(rs!=null) out.println( rs.getInt("eta") ); 
                  if(rs!=null) out.println( rs.getString("citta") ); 
                  if(rs!=null) out.println( rs.getString("nazione") ); 
                  out.println("
    "); 
              } 
              
              
     
              //chiude la connessione 
              connection.close(); 
          %> 
    		
    	</div>
    </body>
    </html>

  2. #2
    C'è sicuramente qualche get che fai sul resultSet che non rispecchia perfettamente il nome della colonna sul db. Controlla bene la costruzione della stringa SQL.
    Al mio segnale... scatenate l'inferno!

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146
    Ho apportato questa modifica ma non considera minimamente i tag html

    EDIT: risolto, mancavano i tag di apertura e chiusura tabella-

    codice:
     /* while(rs.next()) 
              { 
                  if(rs!=null) out.println( rs.getInt("codice") ); 
                  if(rs!=null) out.println( rs.getString("nome") ); 
                  if(rs!=null) out.println( rs.getString("cognome") ); 
                  if(rs!=null) out.println( rs.getInt("eta") ); 
                  if(rs!=null) out.println( rs.getString("citta") ); 
                  if(rs!=null) out.println( rs.getString("nazione") ); 
                  out.println("
    "); 
              } 
             */
             
             while(rs.next())
        {
        out.println("<tr>");
        out.println("<td>" + 
          rs.getInt("codice") + "</td><td> " + 
          rs.getString("nome") + "</td><td> " + 
          rs.getString("cognome") + "</td><td> " + 
          rs.getInt("eta") + "</td><td> " + 
          rs.getString("citta") + "</td><td>" + 
          rs.getString("nazione") + "</td>");
        out.println("<tr>");
        }

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146
    Originariamente inviato da R@ve M@ster
    C'è sicuramente qualche get che fai sul resultSet che non rispecchia perfettamente il nome della colonna sul db. Controlla bene la costruzione della stringa SQL.
    risultato comando desc in oracle


    codice:
    Nome 	Nullo? 	Tipo
    CODICE 	NOT NULL 	NUMBER(38)
    NOME 	  	VARCHAR2(40)
    COGNOME 	  	VARCHAR2(40)
    ETA 	  	NUMBER(38)
    CITTA 	  	VARCHAR2(40)
    NAZIONE 	  	VARCHAR2(40)
    forse devo scrivere i campi in maiuscolo?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146
    codice usato per creare la tabella:

    codice:
    create table persona(
    codice int primary key,
    nome varchar(40),
    cognome varchar2(40),
    eta int,
    citta varchar2(40),
    nazione varchar2(40)
    );
    il nome dei campi è minuscolo, boooooooo, non capisco dove sbaglio..

  6. #6
    Sicuro che il String select=new String(request.getParameter("select")); che poi usi nella costruzione della query ti ritorna ciò che vuoi? (e anche gli altri parametri)
    Al mio segnale... scatenate l'inferno!

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146
    ORA FACCIO UN TEST STAMPANDO QUELLO CHE realmente fa

    EDIT:

    il metodo out.println(SQL) sembra restituire la giusta query..

    codice:
    SELECT nome, cognome, eta FROM persona WHERE codice>0;

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146
    ormai che ci sono posto pure il form che invia i dati:

    codice:
    <div id="form_query">
                     <form name="datiUtenti" action="prova_resultset.jsp" method="get">
                     <p align="center">Crea query per la tabella Persona:</p>
                     
    
                     Select:
     <input type="text" id="input" size="30" name="select">
                     
     
    
                     From:
     <input type="text" id="input" size="30" name="from">
                     
    
    
                     Where:
     <input type="text" id="input" size="30" name="where">
                     
    
    
                     Having:
     <input type="text" id="input" size="30" name="having">
                     
    
    
                     
    
    [b]Scrivi qui le query più complesse[b]</p>
                     <textarea name="testo" id="input" rows="10" cols="60" ></textarea>
                     
                     
    
    
                     
    
                     <button class="button" type="submit">Esegui</button>
    		
    	</div>
    name="datiUtenti" che funzione ha nell'invio dei parametri alla pagina che fa la query? nessuno, vero? Perchè io non l'ho minimamente considerato..

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146
    forse devo fare una cosa del genere?

    http://forum.html.it/forum/showthrea...readid=1218069

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146
    cavolo ho capito dove sbaglio ma non so come risolvere!

    In pratica se faccio una select che seleziona solo la colonna nome, le altre colonne (codice, cognome, eta, citta, nazione) non ci sono nel resultset per questo da errore"column not found"

    devo trovare un metodo di resultset che mi permetta di considerare questa situazione...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.