Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    30

    [servlet] Query esatta,ma da servlet non funziona

    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();
            }
        }
    }

  2. #2

    servlet correzione

    Quote Originariamente inviata da Mifert4 Visualizza il messaggio
    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();
            }
        }
    }

    ================================================== ========================

    Deve fare cosi come sotto.
    Deve usare executeUpdate(query) e retirare la linea
    st=con.createStatement();

    (Dispiace mio povero italiano)


    codice:
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    
    @SuppressWarnings("serial")
    public class CuartaServlet extends javax.servlet.http.HttpServlet
        implements javax.servlet.Servlet {
        
        public void doPost (HttpServletRequest req, HttpServletResponse res)throws IOException {
            Connection con;
            PreparedStatement 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" ,"");            
                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 = con.prepareStatement(SQL);
                   st.executeUpdate(SQL);
                   out.println("Actualizado: libro disponible");
                   st.close();
                }
                else {
                   SQL="UPDATE libros SET situación='préstamo' WHERE idLibro="+idLibro;               
                   st = con.prepareStatement(SQL);
                   st.executeUpdate(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();
            }
        }
    
    
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    30
    Grazie mille!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.