salve ragazzi,
vorrei separare il codice java da quello html di una pagina jsp che esegue una select su una tabella chiamata persona. Il punto di partenza č questa pagina jsp:
Ecco come ho fatto io. Ho creato un file.java chiamato persona e il seguente metodo:codice:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>Tabella Persona dell'utente Francesco - 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.*"%> <% ... //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(); String SQL= new String ("");//OCCORRE INIZIALIZZARE la stringa SQL if(testo.length()==0) SQL = "SELECT "+select+" FROM "+from+" WHERE "+where+";"; else SQL = testo; //out.println(SQL); //out.println(testo.length()); ResultSet rs = st.executeQuery(SQL); //Elaborazione risultati ResultSetMetaData rsmd = rs.getMetaData(); int columnsNumber = rsmd.getColumnCount(); String columnNames[]; columnNames = new String[columnsNumber]; for (int j = 0; j < columnsNumber; j++) { columnNames[j] = rsmd.getColumnName(j + 1); } out.println("<table class=\"table\">"); for (int k=0; k<columnNames.length; k++) { out.println("<th>" + columnNames[k] + "</th>"); } //out.println("<th>Codice</th><th>Nome</th><th>Cognome</th><th>Etą</th><th>Cittą</th><th>Nazione</th>"); while(rs.next()) { out.println("<tr>"); for(int i=1; i<=columnsNumber; i++) { out.println("<td>" ); out.println(rs.getString(i)); out.println("</td>"); } out.println("</tr>"); } out.println("</table>"); //chiude la connessione connection.close(); %> </div> </body> </html>
la pagina jsp che richiama il metodo č:codice:public ResultSet executeSelect(String SQL) throws ClassNotFoundException, SQLException { DBManager dbOracle = new DBManager("jdbc:odbc:OracleODBC", "francesco", "tiger");//creo un'istanza di DBManager dbOracle.startConnection(); Statement st = dbOracle.connection.createStatement(); try { ResultSet rs = st.executeQuery(SQL); return rs; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } ResultSet rs = st.executeQuery(SQL); dbOracle.closeConnection(); return rs; }
codice:<%@page import="java.util.*"%> <%@page import="myUtil.DBManager"%> <%@page import="mioPackage.persona"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>Tabella Persona dell'utente Francesco - 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"> <% //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")); //ESEGUO SELECT persona p = new persona (); String SQL = new String(""); if(testo.length()==0) SQL = "SELECT "+select+" FROM "+from+" WHERE "+where+";"; else SQL = testo; ResultSet rs = p.executeSelect(SQL); ResultSetMetaData rsmd = rs.getMetaData(); int columnsNumber = rsmd.getColumnCount(); String columnNames[]; columnNames = new String[columnsNumber]; for (int j = 0; j < columnsNumber; j++) { columnNames[j] = rsmd.getColumnName(j + 1); } out.println("<table class=\"table\">"); for (int k=0; k<columnNames.length; k++) { out.println("<th>" + columnNames[k] + "</th>"); }
purtroppo ottengo il seguente errore:
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 39 in the jsp file: /query.jsp
ResultSet cannot be resolved to a type
36: else
37: SQL = testo;
38:
39: ResultSet rs = p.executeSelect(SQL);
40: ResultSetMetaData rsmd = rs.getMetaData();
41: int columnsNumber = rsmd.getColumnCount();
42: String columnNames[];
An error occurred at line: 40 in the jsp file: /query.jsp
ResultSetMetaData cannot be resolved to a type
37: SQL = testo;
38:
39: ResultSet rs = p.executeSelect(SQL);
40: ResultSetMetaData rsmd = rs.getMetaData();
41: int columnsNumber = rsmd.getColumnCount();
42: String columnNames[];
43: columnNames = new String[columnsNumber];
Dove sbaglio??? Avete idee migliori?

Rispondi quotando