Visualizzazione dei risultati da 1 a 10 su 24

Discussione: Accesso ad un DB

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2016
    Messaggi
    110
    Credo fosse un problema di driver e di impostazione del server MySQL...
    Ora, dopo 123213123 smanettamenti, son riuscito ad accedere al db e a creare anche la finestra di login solo che non riesco ad interrogare il db per matchare user/passwd dell'utente con quelli presenti nel db...
    In parole povere, compare la finestra di login ma non accade nulla quando provo a loggare indipendentemente da quello che inserisco nei campi...
    dove sbaglio? Grazie

    Qui lo screen del mio db!

    https://s14.postimg.org/b16xus8rl/Mysql_demo.png

    codice:
    import javax.swing.*; //for creating frames
        import java.awt.event.*; //for action listeners
        import java.sql.*;//for db & queries
    
    
        public class Login {
            // statement variables
                Connection con;
                Statement st;
                ResultSet rs;
                
                static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
                static final String DB_URL = "jdbc:mysql://localhost/demo";
                
                static final String USER = "root";
                static final String PASSWD = "root";
                
            // creating frame
                JFrame f = new JFrame("User Login");
                JLabel l = new JLabel("Username");
                JLabel l1= new JLabel ("Password");
                JTextField t = new JTextField(10);
                JTextField t1 = new JTextField(10);
                JButton b = new JButton("Login");
                
            public Login()
            {
                connect();
                frame();
            }
            
            public void connect()
            {
                Connection con = null;//create object of Connection and define it null
                try //try block
                {
                    //STEP 2: Register JDBC driver
                    Class.forName(JDBC_DRIVER);
                    
                    //STEP 3: Open a connection
                    System.out.println("Connecting to a selected database...");
                    con = DriverManager.getConnection(DB_URL, USER, PASSWD);
                            //print on console
                    System.out.println("Connected database successfully...");            
                    }
                catch(SQLException se) //catch block
                {
                    //Handle errors for JDBC
                    se.printStackTrace();
                }
                catch(Exception e) //catch block
                {
                    //Handle errors for Class.forName
                    e.printStackTrace();
                }
                finally  //finally block
                {
                    //finally block used to close resources
                    try  //try block
                    {
                        if(con!=null)//condition
                        con.close(); //close connection
                    }
                    catch(SQLException se)//Handle errors
                    {
                        se.printStackTrace();
                    }//end finally try
                }//end try
            }
        
            public void frame()
            {
                f.setSize(500,150);
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setVisible(true);
                
                JPanel p = new JPanel();
                p.add(l);
                p.add(t);
                p.add(l1);
                p.add(t1);
                p.add(b);
                
                f.add(p);
                
                b.addActionListener(new ActionListener() {
                    public void actionPerformed (ActionEvent e)
                    {
                        try
                        {
                        String user = t.getText().trim();
                        String passwd = t1.getText().trim();
                        
                        String sql = "select username, password from demo.loginaccount where username = '"+user+"'and password = '"+passwd+"'";
                        rs = st.executeQuery(sql);
                        
                        int count = 0;
                        while(rs.next())
                        {
                            count = count + 1;
                        }
                        
                        if(count == 1)
                        {
                            JOptionPane.showMessageDialog(null, "User trovato!");
                        }
                        else if(count > 1) 
                        {
                            JOptionPane.showMessageDialog(null, "Doppio User, Accesso non concesso");
                        }
                        else
                        {
                            JOptionPane.showMessageDialog(null, "User non trovato!");
                        }
                        }
                        
                        
                        catch(Exception ex)
                        {
                            
                        }
                        
                    }
                });
                
                
                    
            }
            
                    
        
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            new Login();
            
        }
    
    
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Sevenis Visualizza il messaggio
    In parole povere, compare la finestra di login ma non accade nulla quando provo a loggare indipendentemente da quello che inserisco nei campi...
    dove sbaglio?
    Scusa ma hai messo un catch vuoto! Come fai a sapere quale (eventuale) eccezione salta fuori?
    La query hai provato ad eseguirla "a mano" con il Workbench o in altro modo? Nota intanto che "password", se ben ricordo, è una parola chiave riservata di MySQL, quindi non dovresti usarla. Ripeto, se ben ricordo (verifica magari sulla documentazione ufficiale). Se proprio volessi usarla nel SQL, dovresti quotarla con i backtick ( l'apice al contrario: ` )

    Il programma lo stai eseguendo con il debugger? Verifichi dove/come passa nel codice? Esegue il actionPerformed? Esegue il executeQuery? Lancia qualche eccezione? Devi DEBUGGARE!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2016
    Messaggi
    110
    Facendo un debug step by step mi pare si blocchi alla riga 89 quando arriva all'action listener...
    Si blocca e non accade nulla.

    codice:
    b.addActionListener(new ActionListener() {
    				public void actionPerformed (ActionEvent e)
    				{
    					try
    					{
    					String user = t.getText().trim();
    					String passwd = t1.getText().trim();
    					
    					String sql = "select username, password from demo.loginaccount where username = '"+user+"'and password = '"+passwd+"'";
    					rs = st.executeQuery(sql);
    					
    					int count = 0;
    					while(rs.next())
    					{
    						count = count + 1;
    					}
    					
    					if(count == 1)
    					{
    						JOptionPane.showMessageDialog(null, "User trovato!");
    					}
    					else if(count > 1) 
    					{
    						JOptionPane.showMessageDialog(null, "Doppio User, Accesso non concesso");
    					}
    					else
    					{
    						JOptionPane.showMessageDialog(null, "User non trovato!");
    					}
    					}
    					
    					
    					catch(Exception ex)
    					{
    						
    					}
    					
    				}
    			});
    Ultima modifica di Sevenis; 24-08-2016 a 21:47

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Sevenis Visualizza il messaggio
    Facendo un debug step by step mi pare si blocchi alla riga 89 quando arriva all'action listener...
    Si blocca e non accade nulla.
    Non so quale è la riga 89 ... e comunque cosa vuol dire "Si blocca e non accade nulla"? Devi essere più preciso. E in tutto questo non hai ancora detto se c'è una eccezione e quale. Hai tutti gli strumenti per verificare/debuggare cosa succede. USALI.
    Una volta che scopri se/quale eccezione c'è, allora si può capire meglio il motivo e come risolvere.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2016
    Messaggi
    110
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Non so quale è la riga 89 ... e comunque cosa vuol dire "Si blocca e non accade nulla"? Devi essere più preciso. E in tutto questo non hai ancora detto se c'è una eccezione e quale. Hai tutti gli strumenti per verificare/debuggare cosa succede. USALI.
    Una volta che scopri se/quale eccezione c'è, allora si può capire meglio il motivo e come risolvere.
    E' chiaro che ho dei problemi e come ho detto sono alle prime armi ma sto cercando di documentarmi il più possibile anche sulle eccezioni...
    Credo comunque che il problema sia nell'interrogazione del db tramite SELECT... potresti dirmi se è giusta o meno quella riga di comando?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Sevenis Visualizza il messaggio
    E' chiaro che ho dei problemi e come ho detto sono alle prime armi ma sto cercando di documentarmi il più possibile anche sulle eccezioni...
    Credo comunque che il problema sia nell'interrogazione del db tramite SELECT... potresti dirmi se è giusta o meno quella riga di comando?
    Ascolta:
    1) Metti un System.out.println(ex); oppure un ex.printStackTrace(); nel catch (insomma, non lasciarlo vuoto!)
    2) Metti un breakpoint sulla riga: String user = t.getText().trim(); che è la prima utile del actionPerformed
    3) Ci arriva a questa riga? Bene, vai avanti con lo Step Over (F6), se una istruzione lancia una eccezione, finisci con il debugger direttamente nel catch. Quindi vai semplicemente a vedere cosa contiene ex.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.