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:
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>
Ecco come ho fatto io. Ho creato un file.java chiamato persona e il seguente 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;
}
la pagina jsp che richiama il metodo č:
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?