Newsgroup: it.comp.java
Titolo: PROBLEMI Java/SQL(Operation not allowed after ResultSet closed)

Ciao a tutti Chiamando la servlet CercaPazientePerNome mi si presenta
la eccezione  "Operation not allowed after ResultSet closed"
Ho provato a cercare in giro ma niente!!!!!!!!!!
Vi posto il codice:
import java.sql.*;
public class DataBase {
 
	Connection conn = null;
	Statement stmt = null;
 
// apre connessione al Dbase
	public void apriConnessione() {
	try {
		Class.forName("com.mysql.jdbc.Driver");
		String url = "jdbc:mysql://localhost:3306/db_rad?user=root&password=";
		//String url = "jdbc:mysql://localhost:3306/?user=root&password=";
		//String user ="root";
		//String password="maiocchi";
		conn = DriverManager.getConnection (url);
		stmt = conn.createStatement();
		  }
		catch (SQLException e) {
			e.printStackTrace();
		} 
	catch (ClassNotFoundException ex) {
			 ex.printStackTrace();
		}
	}
	public void chiudiConnessione() {
	try {
		if (stmt !=null) stmt.close();
		if (conn!=null) conn.close();
		} 
	catch (SQLException e) {
		e.printStackTrace();
		}
		}
public ResultSet ProvaTrovaPazientexNome(String cognome) {
		boolean check=false;
		ResultSet rst;
		rst=null;
		String ricerca=""+cognome+"%";
		String test="pieno";
		try{
			String sql="SELECT * FROM pazienti where cognome like '"+ricerca+"'
and test='"+test+"' ;";
			System.out.println(sql);
			rst = stmt.executeQuery(sql);
			//check=rst.next();
 
 
		}
		catch(SQLException e){
			e.printStackTrace();
 
		}
		return rst;
	}
public int contaImmaginiEndoscopia(String id_paziente){
	ResultSet numeroImmaginiEndoscopia;
	numeroImmaginiEndoscopia=null;
	int ris=0;
	try{
	String sql="SELECT immagine FROM pazienti where
id_paziente='"+id_paziente+"';";
		System.out.println(sql);
		numeroImmaginiEndoscopia = stmt.executeQuery(sql);
 
		while(numeroImmaginiEndoscopia.next()){
			//ris=numeroScreenSave.getInt("numero");
			ris++;
		System.out.println("ris="+ris+"");
		//conn.commit();
		}
 
	}
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
	public class CercaPazientexnome extends HttpServlet {
			public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
				// controllo sulla sessione			
		HttpSession sessione=req.getSession(true);
		Object test_user=sessione.getAttribute("user");
		if (test_user==null) 
		{res.sendRedirect("/General_DB/login.html");}
		String user=(String)sessione.getAttribute("user");
		String password=(String)sessione.getAttribute("passwd");
		try {
		DataBase db=new DataBase();
			db.apriConnessione(); 
			String cognome=req.getParameter("cognome");
			ResultSet  rst=db.ProvaTrovaPazientexNome(cognome);
			while(rst.next()){
			String identificativo=rst.getString("identificativo")
		System.out.println("IDENTIFICATIVO="+identificativo+"");
		int contaImmagini=db.contaImmaginiEndoscopia(identificativo);
	       System.out.println("numero immagini="+contaImmagini+"");
		db.chiudiConnessione();
					}
					catch(SQLException e){
						e.printStackTrace();
					}		
			}
	}

 					}
devi chiudere la connessione fuori dal ciclo while, spostando la 
chiamata al metodo db.chiudiConnessione() al di la' della parentesi che 
chiude il while.
Popix.