Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Problema con un metodo static

    Salve, sto creando un programma dove (tra le tante cose) si da la possibila all'utente di cambiare url, nome e password relativi alla connessione del database.
    In una classe ottengo i valori che vengono salvati in un file.properties e fino a qui tutto ok. Il problema nasce quando sono nella classe relativa alla connesione del batabase. La colpa non è del metodo OutProp (che va a prendere i dati nel file properties) perchè l'ho provato in un'altra classe e funziona perfettamente. Quindi credo ci sia un problema di scrittura codice forse nel metodo public static Connection ConnectDb() perchè essendo statico ci si deve comportare in modo diverso e dato che ho iniziato da poco a studiare il Java penso mi sia sfuggito qualcosa.

    ps. Scrivendo Connection conn = DriverManager.getConnection ("jdbc:mysql://localhost/databaseprogetto/root/root"); si connette perfettamente al server.

    Vi ringrazio per ogni tipo di suggerimento o soluzione e spero di essermi spiegato bene.

    codice:
    import java.io.FileInputStream;
    import java.sql.*;
    import javax.swing.*;
    import java.io.IOException;
    import java.util.Properties;
    
    public class JavaConnect {
      
        Connection conn = null;
        static String url_database;
        static String username;
        static String password;
    
        public void OutProp (){
                    
        Properties prop = new Properties();
                   
            try {   
        		prop.load(new FileInputStream("config.properties"));
                    
                    url_database = prop.getProperty("Url");
                    username = prop.getProperty("Username");
                    password = prop.getProperty("Password");
                    
     
        	} catch (IOException ex) {
        		ex.printStackTrace();
            }
        }
           
           
        public static Connection ConnectDb(){
                                                      
            try{         
                Class.forName ("com.mysql.jdbc.Driver");
                Connection conn = DriverManager.getConnection (url_database,username,password);
                
                return conn;
            }
            catch (Exception e) {
                JOptionPane.showMessageDialog(null, "Connessione database fallita.");
                return null;
            }
        }
    }

  2. #2
    Prima di tutto non ho capito il problema che hai, andando ad intuito penso che hai problemi di connessione con il database...
    Allora, do per certo il metodo OutProp funzioni veramente e che quindi quelle variabili statiche vengono valorizzate.
    Prima domanda il metodo OutProp lo richiami sempre prima di richiamare ConnectDb perchè altrimenti le variabili che usi per connetterti non saranno valorizzate.
    Prova a postare eventualmente anche lo stack trace dell'eccezione generata in modo da farci capire effettivamente qual'è il problema,
    Ovviamente per farlo dovrai farti stampare l'eccezione generata, e se permetti un cosiglio non sopprimere mail le eccezioni in questo modo:
    codice:
     catch (Exception e) {
                JOptionPane.showMessageDialog(null, "Connessione database fallita.");
                return null;
            }
    Ma almeno fattele loggare:
    codice:
     catch (Exception e) {
                JOptionPane.showMessageDialog(null, "Connessione database fallita.");
                e.printStackTrace(System.out);
                 return null;
            }

  3. #3
    Ti ringrazio per il consiglio, e mi da questo errore: java.sql.SQLException: The url cannot be null.
    Aprendo pero manualmente il file config.properties i valori sono scritti in modo esatto.

  4. #4
    E si vede che a quel metodo non arrivano oppure non vengono letti correttamente, mi ripeto la sfera di cristallo non l'abbiamo. Riporta tutto il codice e forse riusciamo ad aiutarti

  5. #5
    Ho unito le due classi per poter avere tutto in un unica classe:

    codice:
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Properties;
    import javax.swing.JOptionPane;
    import java.sql.*;
    import javax.swing.*;
    
    public class DbConnes extends javax.swing.JFrame {
    
        Connection conn = null;
        
        public DbConnes() {
            initComponents();
                   
        }
           
        static String url_database;
        static String username;
        static String password;
        
            
        public void OutProp (){
                    
        Properties prop = new Properties();
                   
            try {   
        		prop.load(new FileInputStream("config.properties"));
                    
                    url_database = prop.getProperty("Url");
                    username = prop.getProperty("Username");
                    password = prop.getProperty("Password");
                    
     
        	} catch (IOException ex) {
        		ex.printStackTrace();
            }
        }
                             
        public static Connection ConnectDb(){
                                                      
            try{         
                Class.forName ("com.mysql.jdbc.Driver");
                Connection conn = DriverManager.getConnection (url_database,username,password);
                
                return conn;
            }
            catch (Exception e) {
                JOptionPane.showMessageDialog(null, e);
                return null;
            }  
        }
                                            
    
        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                            
            
            Properties prop = new Properties();
            
            String value1 = jTextField1.getText();
            String value2 = jTextField2.getText();
            String value3 = jTextField3.getText();
            
     
        	try {    		
                    prop.setProperty("Url", value1);
        		prop.setProperty("Username", value2);
        		prop.setProperty("Password", value3);
        		    		
        		prop.store(new FileOutputStream("config.properties"), null);
                    
                    JOptionPane.showMessageDialog(null, "Salvato");
     
        	} catch (IOException ex) {
        		ex.printStackTrace();
            }
        }                                        
    
        // Variables declaration - do not modify                     
        private javax.swing.JButton jButton1;
        private javax.swing.JLabel jLabel1;
        private javax.swing.JLabel jLabel2;
        private javax.swing.JLabel jLabel3;
        private javax.swing.JPanel jPanel1;
        private javax.swing.JTextField jTextField1;
        private javax.swing.JTextField jTextField2;
        private javax.swing.JTextField jTextField3;
        // End of variables declaration                   
    }
    Rispetto a prima ora c'è anche il metodo private void jButton1ActionPerformed dove salvo i dati nel file config.properties
    Riposto quello che è salvato in questo file:
    #Fri Oct 05 14:22:41 CEST 2012
    Username=gabri
    Password=edp
    Url=jdbc:mysql://localhost/databaseprogetto

    Aggiungo che ieri ho provato anche a inserire in questa classe 3 jtextfiled e a far caricare in quest'ultime i valori e tutto funziona perfettamente.

  6. #6
    Si ok per questa classe ma sarebbe molto più utile se postassi il codice che poi va ad utilizzare tale classe, cioè il codice in cui si verifica l'errore.

  7. #7
    L'altro giorno poi ho risolto unendo i due metodi in uno solo, in questo modo

    codice:
    public static Connection ConnectDb(){
            
        String url_database = "";
        String username = "";
        String password = "";
        
        Properties prop = new Properties();
                   
            try {   
        		prop.load(new FileInputStream("config.properties"));
                    
                    url_database = prop.getProperty("Url");
                    username = prop.getProperty("Username");
                    password = prop.getProperty("Password");
                    
        	} catch (IOException ex) {
        		ex.printStackTrace();
            }
                                                      
            
            try{         
                Class.forName ("com.mysql.jdbc.Driver");
                url_database = "jdbc:mysql://"+url_database;
                Connection conn = DriverManager.getConnection (url_database,username,password);
                
                return conn;
            }
            catch (Exception e) {
                JOptionPane.showMessageDialog(null, e);
                return null;
            }  
        }

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.