Ho scritto una servlet che riscrivendo il metodo post,riceve come parametro l'id di un libro e esegue una query che modifica una parametro di questo libro sul rispettivo database. Premesso che ho provato a verificare,sulla servlet, con out.println(query) la sequenza che veniva eseguita sul database(query è appunto la stringa sql), e la cosa strana è che quando provo a copiare la stringa dll'output ed eseguila manualmente su mysql fa esattamente quello che deve fare, se invece la faccio eseguire alla servlet no,nel senso che il campo sul database non viene aggiornato.
Da cosa potrebbe dipendere un errore di questo tipo?
Posto il codice:
codice:
import javax.servlet.http.*;
import javax.servlet.*;
import java.sql.*;
import java.io.*;
public class CuartaServlet extends HttpServlet {
public void doPost (HttpServletRequest req, HttpServletResponse res)throws IOException {
Connection con;
Statement st;
PrintWriter out;
ResultSet rs;
String SQL;
String idLibro,Disponibilidad;
try {
Class.forName("com.mysql.jdbc.Driver");
}
catch(Exception e) {
System.out.println("Error driver");
e.printStackTrace();
}
try {
con=DriverManager.getConnection("jdbc:mysql://localhost/mydb" , "root" ,"");
st=con.createStatement();
out= res.getWriter();
res.setContentType("text/html");
idLibro=req.getParameter("idLibro");
Disponibilidad=req.getParameter("disponibilidad");
out.println("<HTML><BODY>");
if(Disponibilidad.equals("si")) {
SQL="UPDATE libros SET situación=\'disponible\' WHERE idLibro="+idLibro;
st.executeQuery(SQL);
out.println("Actualizado: libro disponible");
st.close();
}
else {
SQL="UPDATE libros SET situación=\'préstamo\' WHERE idLibro="+idLibro;
st.executeQuery(SQL);
out.println("Actualizado: libro no disponible");
st.close();
}
out.println("</BODY></HTML>");
out.close();
con.close();
}
catch(Exception e) {
System.out.println("Error");
e.printStackTrace();
}
}
}