Originariamente inviato da SQLover
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?