Pagina 2 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 31
  1. #11
    penso di aver capito dov'è il problema.
    nel resultset.
    infatti:
    codice:
    .....
    conn = Connessione.getConnection();
    stmt = conn.createStatement();
    JOptionPane.showMessageDialog(null, "CIAO");
    rs = stmt.executeQuery(sql);  
    .....
    mi esce la finestrella con CIAO.
    così invece:
    codice:
    conn = Connessione.getConnection();
    stmt = conn.createStatement();
    rs = stmt.executeQuery(sql); 
    JOptionPane.showMessageDialog(null, stmt);
    così invece nn esce nulla.
    potrebbe essere come dico io??
    e soprattutto che problemi ha sto rs??

  2. #12
    Evidentemente va in SQLException posta lo stacktrace dell'errore.

    Nel Catch invece di scrivere ex.getMEssage stampati lo stacktrace dell'errore così:
    codice:
    ...
    ..
     } catch (SQLException ex) {
                ex.printStackTrace();
     }
    ...
    ..

  3. #13
    intanto ho levato i % perchè davavno errore.
    poi adesso mi da sto errore:
    codice:
    java.sql.SQLException: Column 'admin' not found.
            at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
            at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
            at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
            at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1093)
            at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5488)
            at operazioni_database.DoLogin.doPost(DoLogin.java:38)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
            at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:470)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
            at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
            at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
            at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
            at java.lang.Thread.run(Thread.java:680)
    ma io nella select nn richiedo la colonna admin, ma la colonna name.
    admin è il nome dell'utente del db che metto nel form.
    vi riposto la classe:
    codice:
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            String name = request.getParameter("txtUser").trim();
            String pass = request.getParameter("txtPass").trim();
            String sql = "SELECT name,pass FROM utenti WHERE name LIKE '" + name + "' AND pass LIKE '" + pass + "'";
            int count = 0;
            Connection conn = null;
            Statement stmt = null;
            ResultSet rs = null;
            try {
                if (name != null && name != "" && pass != null && pass != "") {
                    conn = Connessione.getConnection();
                    stmt = conn.createStatement();
                    rs = stmt.executeQuery(sql);
                    while (rs.next()) {
                        name.equals(rs.getString(name));
                        pass.equals(rs.getString(pass));
                        count++;
                    }
                    if (count > 0) {
                        RequestDispatcher disp = request.getRequestDispatcher("/index.jsp");
                        disp.forward(request, response);
                        JOptionPane.showMessageDialog(null, "IF");
                    } else {
                        RequestDispatcher disp = request.getRequestDispatcher("/login.jsp");
                        disp.forward(request, response);
                        JOptionPane.showMessageDialog(null, "ELSE");
                    }
    //                rs.close();
    //                stmt.close();
                } else {
                    RequestDispatcher disp = request.getRequestDispatcher("/login.jsp");
                    disp.forward(request, response);
                }
            } catch (ClassNotFoundException ex) {
                ex.getMessage();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }

  4. #14
    I percento non fungevano perchè li mettevi fuori della stringa, probabilmente non ti prende bene gli apici per tagliare la testa al toro impara ad usare i PeparedStatement con i punti interrogativi e poi setti i valori.
    codice:
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            String name = request.getParameter("txtUser").trim();
            String pass = request.getParameter("txtPass").trim();
            String sql = "SELECT name,pass FROM utenti WHERE name LIKE ? AND pass LIKE ?";
            int count = 0;
            Connection conn = null;
            PeparedStatement ps = null;
            ResultSet rs = null;
            try {
                if (name != null && name != "" && pass != null && pass != "") {
                    conn = Connessione.getConnection();
                    ps= conn.prepareStatement(sql);
                    ps.setString(1,name);
                    ps.setString(2,pass);
                    rs = ps.executeQuery();
    ......
    ....
    ...

  5. #15
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Io cambierei questo:

    codice:
    while (rs.next()) {
                        name.equals(rs.getString(name));
                        pass.equals(rs.getString(pass));
                        count++;
                    }
                    if (count > 0) {
                        RequestDispatcher disp = request.getRequestDispatcher("/index.jsp");
                        disp.forward(request, response);
                        JOptionPane.showMessageDialog(null, "IF");
                    } else {
                        RequestDispatcher disp = request.getRequestDispatcher("/login.jsp");
                        disp.forward(request, response);
                        JOptionPane.showMessageDialog(null, "ELSE");
                    }
    cosi:

    codice:
    while (rs.next()) {
                        RequestDispatcher disp = request.getRequestDispatcher("/index.jsp");
                        disp.forward(request, response);
                        JOptionPane.showMessageDialog(null, "IF");
    return;
                   }
                        RequestDispatcher disp = request.getRequestDispatcher("/login.jsp");
                        disp.forward(request, response);
                        JOptionPane.showMessageDialog(null, "ELSE");
    Il controllo sui campi del form viene eseguito direttamente dalla query sql, quindi quando entra nel while significa che ha trovato una corrispondenza, l'unica cosa da verificare è se è possibile che nel db ci siano piu coppie uguali dei campi name/pass. Per la questione dell'errore hai verificato la riga 38 della classe DoLogin.java?

  6. #16
    così pare funzionare:
    codice:
    package operazioni_database;
    
    import java.io.IOException;
    import java.sql.*;
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class DoLogin extends HttpServlet {
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doPost(request, response);
        }
    
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            String name = request.getParameter("txtUser").trim();
            String pass = request.getParameter("txtPass").trim();
            String sql = "SELECT name,pass FROM utenti WHERE name LIKE ? AND pass LIKE ?";
            Connection conn = null;
            PreparedStatement ps = null;
            ResultSet rs = null;
            try {
                if (name != null && name != "" && pass != null && pass != "") {
                    conn = Connessione.getConnection();
                    ps = conn.prepareStatement(sql);
                    ps.setString(1, name);
                    ps.setString(2, pass);
                    rs = ps.executeQuery();
                    while (rs.next()) {
                        RequestDispatcher disp = request.getRequestDispatcher("/DoSelect");
                        disp.forward(request, response);
                        ps.close();
                        rs.close();
                        return;
                    }
                    RequestDispatcher disp = request.getRequestDispatcher("/login.jsp");
                    disp.forward(request, response);
                } else {
                    RequestDispatcher disp = request.getRequestDispatcher("/login.jsp");
                    disp.forward(request, response);
                }
            } catch (ClassNotFoundException ex) {
                ex.getMessage();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
    }
    però dopo il login se provo a riseguire l'operazione mi richiede di rifarlo.
    è un problema di sessione o ancora di metodo secondo voi??

  7. #17
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    codice:
                    RequestDispatcher disp = request.getRequestDispatcher("/login.jsp");
                    disp.forward(request, response);
                } else {
                    RequestDispatcher disp = request.getRequestDispatcher("/login.jsp");
                    disp.forward(request, response);
    In entrambi i casi chiami la stessa pagina jsp, errore di distrazione? poi ti consiglio di inserire nel catch la chiusura di tutte risorse appese(connection,statement,resultset ecc..) nel caso di una eccezione.

  8. #18
    Come ti ha suggerito sovrascrivi il dispatcher sempre con login.
    Più che nel catch i resultset statement e connessione chiudili nel finally perchè lo esegue sempre.

  9. #19
    si in genere lo metto nel finally, li avevo levati xche mi davano errore in quanto prima nn venivano aperti.

    per il disprcher la mia idea era questa:
    -se i campi sono vuoti ti rimando alla pagina di login
    -se nn c'è corrispondenza anche
    dici che è questo il problema??

  10. #20
    Nel finally prima di chiudere i resultset etc controlla che siano diversi da null se si li chiudi altrimenti no.
    L'idea è giusta ma il codice no.
    se entra nel while mette il dispatcher disp a DoSelect appena esce dal while lne fa un altro sempre con nome disp lo mette a login e fa la forward.
    Seguendo la tua strada dichiarati un solo Dispatcher la valorizzi fuori dal while prima a login poi se entra nel while lo sovrascrive con DoSelect e fuori dal while fa la forward.
    Per capirci:
    codice:
    ResultSet rs = null;
            try {
                RequestDispatcher disp = request.getRequestDispatcher("/login.jsp");
                if (name != null && name != "" && pass != null && pass != "") {
                    conn = Connessione.getConnection();
                    ps = conn.prepareStatement(sql);
                    ps.setString(1, name);
                    ps.setString(2, pass);
                    rs = ps.executeQuery();
                    while (rs.next()) {
                        disp = request.getRequestDispatcher("/DoSelect");
                        disp.forward(request, response);
                        ps.close();
                        rs.close();
                        return;
                    }
    
                    disp.forward(request, response);
                }......

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 © 2026 vBulletin Solutions, Inc. All rights reserved.