Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343

    [jsp] query che non gira....

    Salve ragazzi vi mostro 2 query....molto simili
    la prima funziona e la seconda no....potreste aiutarmi a capire???
    codice:
    public boolean login() {
            auth = false;
            try {
                ResultSet r1 = s.executeQuery("SELECT * FROM admin WHERE username='" + getUsername() + "' and password= '" + getPassword() + "'");
                if (r1.next()) {
                    username = r1.getString("username");
                    password = r1.getString("password");
                    nome = r1.getString("nome");
                    cognome = r1.getString("cognome");
                    auth = true; //se l'utente esiste nel database
                }
                else {
                    ResultSet r2 = s.executeQuery("SELECT * FROM utentipri WHERE username='" + getUsername() + "' and password= '" + getPassword() + "'");
                    if (r2.next()) {
                        username = r2.getString("username");
                        password = r2.getString("password");
                        nome = r2.getString("nome");
                        cognome = r2.getString("cognome");
                        auth = true; //se l'utente esiste nel database
                    }
                    ResultSet r3 = s.executeQuery("SELECT * FROM visitatori WHERE username='" + getUsername() + "' and password= '" + getPassword() + "'");
                    if (r3.next()) {
                        username = r3.getString("username");
                        password = r3.getString("password");
                        nome = r3.getString("nome");
                        cognome = r3.getString("cognome");
                        auth = true; //se l'utente esiste nel database
                    }
                }
            }
            catch (Exception e) {
                msgErrore = e.getMessage();
            }
            return auth;
        }
    codice:
    public boolean RecuperoPass() 
        {
            recupero=false;
            try 
            {
                ResultSet r1 = s.executeQuery("UPDATE admin SET password = '" + getPassword() + "' WHERE email = '" + getEmail() + "'");
                if(r1.next()) 
                {
                    password = r1.getString("password");
                    email = r1.getString("email");
                    recupero=true; //se la password è stata modificata
                }
                else 
                {
                    ResultSet r2 = s.executeQuery("UPDATE utentipri SET password = '" + getPassword() + "' WHERE email = '" + getEmail() + "'");
                    if (r2.next()) 
                    {
                        password = r2.getString("password");
                        email = r2.getString("email");
                        recupero=true; //se la password è stata modificata
                    }
                    ResultSet r3 = s.executeQuery("UPDATE visitatori SET password = '" + getPassword() + "' WHERE email = '" + getEmail() + "'");
                    if (r3.next()) 
                    {
                        password = r3.getString("password");
                        email = r3.getString("email");
                        recupero=true; //se la password è stata modificata
                    }
                }
            }
            catch(Exception e) 
            {
                msgErrore=e.getMessage();
            }
            return recupero;
        }
    vi dico in anticipo che il db è mysql....nella jsp ho inserito tutti i system.out possibili e dunque in embrambi i casi i dati vengono passati ed il db è collegato...solo che la seconda query mi restituisce false
    ps la 2 query non modifica la password nel database

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Non ammazzare le eccezioni (non seguire pedissequamente quello che ho scritto tantissimi anni fa nella pillola): usa sempre la stampa del trace delle eccezioni:

    codice:
    try {
       ...
    } catch (Exception e) {
       e.printStackTrace();
       ...
    }
    In questo modo potrai vedere nei log tutto quello che è necessario per poter trovare l'errore.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Se non ho capito male stai parlando delle query del "RecuperoPass".

    Consiglio molto pratico:

    Codice PHP:
    String sql "UPDATE admin SET password = '" getPassword() + "' WHERE email = '" getEmail() + "'";
    System.out.println("sql: " sql);
    ResultSet r1 s.executeQuery(sql);
                if(
    r1.next()) 
                {
                    
    password r1.getString("password");
                    
    email r1.getString("email");
                    
    recupero=true//se la password è stata modificata
                

    Il ballo degli statement è che puoi stamparti la query così come viene inviata al db (se qualcuno sa come fare lo stesso per le PreparedStatement dica pure...)

    Se vedi che la query ti da risultati inattesi, nel caso specifico non restituisce risultati, non fai altro che copiarla dalla console e testarla direttamente sul database (non so, su ubuntu con MySQL, forse hai un phpMyAdmin... o forse qualcosa di ancor più pratico...)

    In questo modo capisci se l'errore è nella query (magari mancano i dati in DB...) oppure nel codice java.
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    stampata la query in phpmyadmin...funziona
    cambiato...le eccezioni come consigliato da LeleFT....ma il problema resta
    vi stampo la jsp....può darsi ke trovate li qualche miei casini...
    non ci fate caso agli if e gli out ma volevo stamparmi tutto....x verificare
    codice:
    if(bean.connect())
    			{
    				out.println("connesso");
    			}
    			else
    			{
    				out.println("non connesso");
    			}
    			String email = request.getParameter("email");
    			bean.setEmail(email);
    			String em = bean.getEmail();
    			out.println(em);
    			bean.verifica();
    			//controllo l'esito della mail
    			if (bean.getVerifica()) 
    			{ 
    				String pass = beans.getPWD();   //genera password
    				out.println(pass);         //stampa genera pass
    				bean.setPassword(pass);
    				String p = bean.getPassword();   
    				out.println(p);                //verifica che sia uguale a genera pass
    				String email1 = request.getParameter("email");      
    				bean.setEmail(email1);
    				String em1 = bean.getEmail();                //verifica sia uguale a email
    				out.println(em1);
    				//bean.getMail();                     //invia mail
    				String cry = bean.hashCode(pass); // genera hash di pass
    				out.println(cry);
    				bean.setPassword(cry);  //imposta la password nel db 
    				String c = bean.getPassword();
    				out.println(c);
    				bean.setEmail(email);
    				bean.setPassword(crypt);
    				if(bean.connect())
    			{
    				out.println("connesso");
    			}
    			else
    			{
    				out.println("non connesso");
    			}
    				bean.RecuperoPass();
    				if(bean.getRecupero())
    				{
    				out.println("recuperato");
    				}
    				else
    				{
    				out.println("non recuperato");
    				}

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    mi domando....mica mysql avrà qualche impostazione che ne blocca la modifica dei dati delle tabelle?

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da 84morena
    cambiato...le eccezioni come consigliato da LeleFT....ma il problema resta
    La modifica che ho consigliato io non serviva a risolvere il problema, ma a provare a scovarlo.
    Hai guardato i log di (Tomcat? GlassFish? JBoss? WebSphere? Quello che usi?)

    Controlla i log e, se vi sono indicazioni su possibili eccezioni, postali.

    Se vi fossero restrizioni sulle operazioni, verrebbero sollevate delle eccezioni e le troveresti, appunto, nei log (se hai modificato il trattamento delle eccezioni come indicato).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Utente di HTML.it L'avatar di Lomio
    Registrato dal
    Jul 2010
    Messaggi
    160
    executeQuery() ---> per le SELECT
    executeUpdate() ---> per UPDATE e DELETE
    La legge e l'ordine saranno rispettati solo quando si concederà la giustizia a tutti indistintamente.

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da Lomio
    executeQuery() ---> per le SELECT
    executeUpdate() ---> per UPDATE e DELETE


    Non avevo fatto caso che aveva usato executeQuery() per l'update...

    Quoto quanto detto da Lomio.

    PS: Nei log dovresti trovare delle eccezioni che ti dicono proprio questo...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    ecco... vado nel log e trovo questa eccezione:
    sql: UPDATE admin SET password = '17c7cda097bd920da5718eaa05281759' WHERE email = 'morena84@gmail.com'
    java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
    at com.mysql.jdbc.SQLError.createSQLException(SQLErro r.java:1075)
    at com.mysql.jdbc.SQLError.createSQLException(SQLErro r.java:989)
    at com.mysql.jdbc.SQLError.createSQLException(SQLErro r.java:984)
    at com.mysql.jdbc.SQLError.createSQLException(SQLErro r.java:929)
    at com.mysql.jdbc.StatementImpl.checkForDml(Statement Impl.java:436)
    at com.mysql.jdbc.StatementImpl.executeQuery(Statemen tImpl.java:1390)
    at beans.UtentiBean.RecuperoPassword(UtentiBean.java: 420)
    at org.apache.jsp.index_jsp._jspService(index_jsp.jav a:294)
    at org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:97)
    at javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
    at org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:332)
    at org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:314)
    at org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:264)
    at javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
    at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(H ttp11Processor.java:869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11 ConnectionHandler.processConnection(Http11BaseProt ocol.java:664)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.process Socket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThr ead.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlR unnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Unknown Source)

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da 84morena
    ecco... vado nel log e trovo questa eccezione:
    java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
    Esattamente quello che abbiamo detto poco sopra io e Lomio...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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