PDA

Visualizza la versione completa : [JAVA] Stampare ResultSet


girub
01-12-2003, 17:02
Ciao a tutti,
questa servlet, divenuta sempre di più oggetto dei miei studi...
cosi funziona...:

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;

public class Login extends HttpServlet
{

public void init(ServletConfig config) throws ServletException
{
super.init(config);
}

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
try
{
String USR = request.getParameter("usr");
String PWD = request.getParameter("pws");

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection connection=DriverManager.getConnection("jdbc:odbc:login");
Statement statement = connection.createStatement();
String sql="SELECT * FROM Nominativi where username = '"+USR+"' and password='"+PWD+"'";
ResultSet rs = statement.executeQuery(sql);

boolean abilitato= false;
while(rs.next()){
abilitato = true;

}

response.setContentType("text/html");
PrintWriter out = new PrintWriter (response.getOutputStream());
out.println("<html>");
out.println("<head><title>Autenticazione</title></head>");
out.println("<body bgColor=#33CCFF");

if (abilitato)
{
out.println("<HR>

<h1> **** Sei autenticato...!!! **** </h1>");
}else{
out.println("

<h1> **** NON autenticato...!!! **** </h1>");
}
out.println("</body></html>");
connection.close();
out.close();
}
catch (SQLException e)
{

}
catch(ClassNotFoundException e)
{

}
catch(Throwable theException)
{

}
}

public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
{

doGet(request, response);

} // end doPost(...)

}



solo che ho deciso.. (spinto da un atto di follia.... ) di stampare anche i record triovati... e così mi son lanciato andando un pò per intuito... :D .. e vedendo un pò le librerie

ho messo nel ciclo questo:

String Nome = rs.getString("Nome");
String Cognome = rs.getString("Cognome");

out.printl("NOME:::: "+Nome);


ma come già immaginate contuiìinua a darmi errore...
Ma come si fa a stampare semplicemente dei record trovati con una servlet..?
Ciao Giuseppe

standard
01-12-2003, 21:06
out.printl("NOME:::: "+Nome);
meglio println.
poi se non sbaglio va chiuso anche il RecordSet (oltre la connessione). o no?

ciauz

V1RuZ
01-12-2003, 21:29
Se ti dà errore, devi sempre postarlo altrimenti nn si capisce quale è il problema. Cmq prova così:


while(rs.next()){
nome = rs.getString(1);
cognome = rs.getString(2);
}

cristiano_longo
02-12-2003, 09:48
Ma come si fa a stampare semplicemente dei record trovati con una servlet..?


Come si farebbe in un normale programma.

1)Crei lo statement(e lo hai fatto)
2)Crei il resultset eseguendo la query(lo hai fatto pure)
3)Chiami rs.next() per avanzare il puntatore. Se ritorna falso hai finito.
4)Se ritorna vero prelevi i dati con istruzioni del tipo rs.getString(numero colonna), a seconda del tipo di colonna.
5)fai quello che devi fare con questi dati e ritorni al passo 3.

girub
02-12-2003, 17:19
grazie delle risposte...
qando arrivo a casa.. provero a stampare in questo modo...


ma ora vorrei approfittare per chiedere una cosa...
questo metodo:


public void init(ServletConfig config) throws ServletException
{
super.init(config);
}


cosa vorrebbe dire in questo caso??
credo di aver capito (e spero di non essermi sbagliato) che questo metodo ha la funzione di inizializzare la servlet... vero??
Dovrebbe funzionare come un costruttore o sbaglio???
Ma soprattutto in questo caso... cosa vuol dire così??
Grazie
Giuseppe R.

V1RuZ
02-12-2003, 19:42
Ogni volta che viene avviato tomcat (o riavviato) vengono invocati tutti i metodi init delle servlet secondo l'ordine definito nel web.xml, un pò come si farebbe con un costruttore. Nella init puo mettere del codice x inizializzare x esempio variabili statiche della servlet cose simili

girub
03-12-2003, 11:21
grazie V1RuZ del chiarimento...

allora per il resto io ho provato a fare così...





import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;

public class Login extends HttpServlet
{

public void init(ServletConfig config) throws ServletException
{
super.init(config);
}

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
try
{
String USR = request.getParameter("usr");
String PWD = request.getParameter("pws");

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection connection=DriverManager.getConnection("jdbc:odbc:login");
Statement statement = connection.createStatement();
String sql="SELECT * FROM Nominativi where username = '"+USR+"' and password='"+PWD+"'";
ResultSet rs = statement.executeQuery(sql);

boolean abilitato= false;
while(rs.next()){
abilitato = true;
nome = rs.getString(1);
cognome = rs.getString(2);
out.println("Nome "+nome);
out.println("Cognome "+cognome);
}

response.setContentType("text/html");
PrintWriter out = new PrintWriter (response.getOutputStream());
out.println("<html>");
out.println("<head><title>Autenticazione</title></head>");
out.println("<body bgColor=#33CCFF");

if (abilitato)
{
out.println("<HR>

<h1> **** Sei autenticato...!!! **** </h1>");
}else{
out.println("

<h1> **** NON autenticato...!!! **** </h1>");
}
out.println("</body></html>");
connection.close();
out.close();
}
catch (SQLException e)
{

}
catch(ClassNotFoundException e)
{

}
catch(Throwable theException)
{

}
}

public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
{

doGet(request, response);

} // end doPost(...)

}



ma mi da questi errori:

C:\java>javac Login.java
Login.java:32: cannot resolve symbol
symbol : variable nome
location: class Login
nome = rs.getString(1);
^
Login.java:33: cannot resolve symbol
symbol : variable cognome
location: class Login
cognome = rs.getString(2);
^
Login.java:35: cannot resolve symbol
symbol : variable nome
location: class Login
out.println("Nome "+nome);
^
Login.java:35: cannot resolve symbol
symbol : variable out
location: class Login
out.println("Nome "+nome);
^
Login.java:36: cannot resolve symbol
symbol : variable cognome
location: class Login
out.println("Cognome "+cognome);
^
Login.java:36: cannot resolve symbol
symbol : variable out
location: class Login
out.println("Cognome "+cognome);
^
6 errors



mi sapreste dire il perchè??
possibile che non riesca a stampare un recordset??
Ciao a tutti e buona giornata.
Giuseppe

cristiano_longo
03-12-2003, 11:25
Non hai dichiarato le variabili Nome e Cognome. Per out non ti so dire.

girub
03-12-2003, 11:49
ok.. grazie cristiano..
ora che ho dichiarato le variabili mi da solo questi errori...


C:\Documents and Settings\grubino>javac \java\Login.java
\java\Login.java:37: cannot resolve symbol
symbol : variable out
location: class Login
out.println("Nome "+nome);
^
\java\Login.java:38: cannot resolve symbol
symbol : variable out
location: class Login
out.println("Cognome "+cognome);
^
2 errors


dove sbaglio??
grazie Ciao
Giuseppe

cristiano_longo
03-12-2003, 11:59
Devi spostare la riga



PrinterWriter out = new PrinterWriter ....


all'inizio del metodo.

Loading