Ho questa servletall'internodi questa servlet c'è anche la dichiarazione di normalizzaQuestionario():codice:package Servlet; import java.io.*; import java.sql.*; import java.net.*; import java.text.*; import javax.servlet.*; import javax.servlet.http.*; public class Gestione extends HttpServlet { MyConnection m = new MyConnection(); protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ClassNotFoundException, SQLException { response.setContentType("text/xml;charset=UTF-8"); PrintWriter out = response.getWriter(); String user = request.getSession().getAttribute("s_usr").toString(); int id_usr = Integer.parseInt(request.getSession().getAttribute("s_idusr").toString()); try { String act = request.getParameter("act"); if(act.equals("nonso")) { int idq = Integer.parseInt(request.getParameter("idq")); String idd = request.getParameter("idd"); int idc = Integer.parseInt(request.getParameter("idc")); int prog = Integer.parseInt(request.getParameter("prog")); normalizzaQuestionario(id_usr, idq, prog, idc); out.println("<msg>finito</msg>"); } } catch(){....}
Normalizza questionario mi esegue delle operazioni sul Database, l'ultimo whille e l'ultimo for non sono riuscito a metterli insieme altrimenti andava in errore e non eseguiva gli update.codice:protected void normalizzaQuestionario(int id_usr, int id_qst, int prog, int id_crs) { try { // Leggo quante domande andranno aggiunte da web.xml int quanti = Integer.parseInt(getParam("quanti")); int esi; String sql0 = "SELECT id_dom, data FROM questionari WHERE id_qst="+id_qst+" AND prog >="+prog; ResultSet rs = m.eseguiQuery(sql0); // creo la stringa SQL che andrà ad incrementare il prog delle domande di un determinato 'quanto' int i = 0; String sql[] = new String[m.rowCount(rs)]; while (rs.next()) { sql[i] = "UPDATE questionari SET prog = (prog + " + quanti + ") WHERE id_qst=" + id_qst + " AND id_dom=" + rs.getInt("id_dom") + ";"; i++; } for (int k = 0; k <= i; k++) { esi = m.eseguiUpdate(sql[k]); } } catch (SQLException ex) { ex.printStackTrace(); } }
così comè il programma funziona correttamente, ma nel processRequest, dopo la chiamata a normalizzaQuestionario, vedi linea rossa, si blocca, infatti non stampa mai finito, anche se ha correttamente eseguito le operazioni SQL. Ovviamente ho provato a mettere la stringa finito, prima della chiamata e tutto funziona correttamente, e il DB è cmq aggiornato. Idee sul problema????

Rispondi quotando