Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25

Discussione: Accesso ad un DB

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2016
    Messaggi
    110

    Accesso ad un DB

    Ciao a tutti!
    sto smanettando per la prima volta in Java per un progetto universitario di gestione di un magazzino ma sto trovando già i primi problemi nell'accesso al db.

    Guardando qualche tutorial sono arrivato a scrivere questo:

    codice:
    package FirstExamples;
    
    
    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;
            
        // 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()
        {
            try
            {
            String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
            Class.forName(driver);
            
            String db = "jdbc:odbc:db1";
            con = DriverManager.getConnection(db);
            st = con.createStatement();
            }
            catch(Exception ex)
            {
                System.out.println("Non si è connesso al db!");
            }
        }
        
        public void frame()
        {
            f.setSize(600,400);
            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);
        }
        
        public static void main(String[] args)
        {
            new Login();
        }
            
    }
    Ritrovandomi però a monitor "Non si è connesso al db!" a dimostrazione del mancato accesso.
    Da premettere che ho inserito il db (db1) come DSN di sistema nell'origine dati ODBC del pannello di amministrazione.
    Potreste aiutarmi a capire dove sbaglio? Grazie!

  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
    Ritrovandomi però a monitor "Non si è connesso al db!" a dimostrazione del mancato accesso.
    Da premettere che ho inserito il db (db1) come DSN di sistema nell'origine dati ODBC del pannello di amministrazione.
    Potreste aiutarmi a capire dove sbaglio? Grazie!
    Release di Java utilizzata? Perché se stai usando Java 8, sappi che purtroppo il driver JDBC-ODBC non è più fornito con Java 8.
    Se è quello il problema, vedi questa discussione.


    P.S. quando hai problemi di questo tipo, invece di guardare solo il messaggio che stampi (che magari è "troppo" generico come il tuo), abituati a stampare/guardare la eccezione!
    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
    Grazie innanzitutto per la risposta!
    Quindi mi sa che mi conviene passare alla JDK 7 per non avere problemi? Si, io uso la 8...

    Ma l'eccezione non è quella che setto io? E quindi la System.out.println oppure posso vedere nello specifico cosa fa scattare l'eccezione?

    p.s. ma se hanno tolto il driver JDBC-ODBC come ci si connette con la JDK8?
    Ultima modifica di Sevenis; 22-08-2016 a 17:46

  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
    Grazie innanzitutto per la risposta!
    Quindi mi sa che mi conviene passare alla JDK 7 per non avere problemi?
    Se puoi passare a Java 7 ... beh, meglio. Ma sappi che non potrai mai upgradare a Java 8 se usi quel driver JDBC-ODBC fornito insieme al runtime Java.

    Quote Originariamente inviata da Sevenis Visualizza il messaggio
    Ma l'eccezione non è quella che setto io? E quindi la System.out.println oppure posso vedere nello specifico cosa fa scattare l'eccezione?
    Hai catturato Exception, che vuol dire (quasi) tutto. Semplicemente debugga con un debugger o stampa

    System.out.println(ex);

    o meglio puoi stampare lo stack trace

    ex.printStackTrace();

    (P.S. se non hai chiara la gestione delle eccezioni ..... forse è meglio fare qualche passo indietro, prima di arrivare ai DB)


    Quote Originariamente inviata da Sevenis Visualizza il messaggio
    p.s. ma se hanno tolto il driver JDBC-ODBC come ci si connette con la JDK8?
    Se vuoi usare un "ponte" JDBC-ODBC, devi usare un altro driver. Una soluzione era stata indicata nell'altra discussione linkata. Ma questo IMPATTA sul codice che devi scrivere.
    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
    Son passato a jdk7 ma non capisco perché si blocchi...
    il debug mi restituisce:

    <terminated>Login (1) [Java Application]
    <terminated, exit value: 0>C:\Program Files (x86)\Java\jdk1.7.0_80\bin\javaw.exe (23 ago 2016, 16:43:27)
    e non mi appare più nemmeno la println del catch "non è connesso al db! o la successiva frame...

  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
    Son passato a jdk7 ma non capisco perché si blocchi...
    il debug mi restituisce:

    e non mi appare più nemmeno la println del catch "non è connesso al db! o la successiva frame...
    Ma non parte proprio il programma? O parte e poi per qualche motivo termina? Esegui passo-passo il programma con il debugger, è la prima cosa da fare.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2016
    Messaggi
    110
    mi esce scritto semplicemente questo:

    <terminated>Login (1) [Java Application]
    <disconnected>Login at localhost:65274
    <terminated, exit value: 0>C:\Program Files (x86)\Java\jdk1.7.0_80\bin\javaw.exe (23 ago 2016, 17:26:18)


  8. #8
    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
    mi esce scritto semplicemente questo:
    Metti un breakpoint sulla prima istruzione possibile del main, poi lancia in debug. Arriva a quel punto? Se sì, metti un breakpoint in un altro punto (es. prima istruzione del connect()). Ci arrivi? Ecc.....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    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
    Credo che il problema possa essere che non riesce ad accedere al localhost... ho scaricato mysql workbench e non mi rileva ne' fa connettere a nessun local db...
    Domanda banale: il server MySQL è avviato? Se sì, altra cosa: quando hai installato il MySQL sicuramente ti avrà chiesto la password per lo user 'root'; con queste credenziali riesci ad accedere? (anche solo con i tools a linea di comando di MySQL, intendo)

    Queste non sono questioni di "programmazione" ma di amministrazione/configurazione. E solo tu puoi sapere e verificare cosa hai installato, come, dove ecc...
    Ultima modifica di andbin; 24-08-2016 a 15:14
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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

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.