Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    [Java] Salvare opzioni di connessione

    supponendo di creare più utenti nel mio db mysql, e di dare la possibilità di connettersi a diversi db, vorrei impostare la possibilità di salvare i parametri di connessione.
    io pensavo di salvarle creando una cartella nella home dell'utente con dentro un file dove, appunto, salvare i parametri.
    ho però alcuni problemi.
    -in quale formato salvare il file? io pensavo a xml perchè già strutturato
    -come passare i parametri di connessione al metodo che è fatto così:
    codice:
    public class DBManager {
    
        private static DBManager instance = null;
        final static String HOST = "...";
        final static String DB = "...";
        final static String USER = "...";
        final static String PWD = "...";
        private static Connection conn = null;
    
        private DBManager() {
        }
    
        public static DBManager getInstance() {
            return (instance == null) ? (instance = new DBManager()) : instance;
        }
    
        public Connection getConnection() throws ClassNotFoundException, SQLException {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://" + HOST + ":3306/" + DB + "?user=" + USER + "&password=" + PWD);
            return conn;
        }
    .......

  2. #2
    Bè forse è molto più indicato un file .properties, almeno per come sono strutturate le impostazione (coppie chiave valore). Anche perchè gestire un file xml è una cosa un pò laboriosa mentre quello properties può essere gestito in maniera molto semplice tramite l'oggetto Properties che java mette a disposizione.
    Se poi vuoi fare le cose perbenino potresti anche pensare di creare un oggetto ConnectionProperties in cui dichiari le tue proprietà di connessione e poi serializzi tale oggetto su file per poi rileggerlo quando ne hai bisogno.
    Spero di averti dato delle buone idee.
    Ciao

  3. #3
    Originariamente inviato da francesco.muia
    Bè forse è molto più indicato un file .properties, almeno per come sono strutturate le impostazione (coppie chiave valore). Anche perchè gestire un file xml è una cosa un pò laboriosa mentre quello properties può essere gestito in maniera molto semplice tramite l'oggetto Properties che java mette a disposizione.
    Se poi vuoi fare le cose perbenino potresti anche pensare di creare un oggetto ConnectionProperties in cui dichiari le tue proprietà di connessione e poi serializzi tale oggetto su file per poi rileggerlo quando ne hai bisogno.
    Spero di averti dato delle buone idee.
    Ciao
    si grazie nn conoscevo Properties.
    girando e guardando mi sono costruito questa classe qua che dovrebbe leggere e scrivere su un file di properties:
    codice:
    public class Property {
    
        private static String fileProperties = "config.properties";
    
        public static synchronized String getString(String key) {
            String result = "";
            Properties props = new Properties();
            try {
                props.load(new FileInputStream(fileProperties));
                result = props.getProperty(key);
            } catch (IOException ex) {
                JOptionPane.showMessageDialog(null, ex.getMessage());
            }
            return result;
        }
    
        public static synchronized void setProperty(String key, String value) {
            Properties properties = new Properties();
            try {
                properties.load(new FileInputStream(fileProperties));
                properties.setProperty(key, value);
            } catch (IOException ex) {
                JOptionPane.showMessageDialog(null, "Errore lettura file: " + fileProperties + "\nErrore: " + ex.getMessage());
            }
            try {
                properties.store(new FileOutputStream("config.properties"), null);
            } catch (IOException ex) {
                JOptionPane.showMessageDialog(null, "Errore salvataggio file: " + fileProperties + "\nErrore: " + ex.getMessage());
            }
        }
    }
    andrebbe bene?
    e poi nn ho capito dove salva il file, o meglio se devo settare io la directory o lo fa in automatico.

  4. #4
    di default prende la corrente directory del file class. Ovviamente se vuoi cambiare percorso lo puoi fare passando un FileOutputStream.

  5. #5
    Originariamente inviato da francesco.muia
    di default prende la corrente directory del file class. Ovviamente se vuoi cambiare percorso lo puoi fare passando un FileOutputStream.
    dici una cosa del genere:
    codice:
        public static synchronized void setProperty(String key, String value) {
            Properties properties = new Properties();
            try {
                properties.load(new FileInputStream(fileProperties));
                properties.setProperty(key, value);
            } catch (IOException ex) {
                JOptionPane.showMessageDialog(null, "Errore lettura file: " + fileProperties + "\nErrore: " + ex.getMessage());
            }
            try {
                if (System.getProperty("os.name").contains("window")) {
                    properties.store(new FileOutputStream(System.getProperty("user.home") + "\\config.properties"), null);
                } else {
                    properties.store(new FileOutputStream(System.getProperty("user.home") + "/config.properties"), null);
                }
            } catch (IOException ex) {
                JOptionPane.showMessageDialog(null, "Errore salvataggio file: " + fileProperties + "\nErrore: " + ex.getMessage());
            }
        }

  6. #6
    Originariamente inviato da fermat
    dici una cosa del genere:
    codice:
        public static synchronized void setProperty(String key, String value) {
            Properties properties = new Properties();
            try {
                properties.load(new FileInputStream(fileProperties));
                properties.setProperty(key, value);
            } catch (IOException ex) {
                JOptionPane.showMessageDialog(null, "Errore lettura file: " + fileProperties + "\nErrore: " + ex.getMessage());
            }
            try {
                if (System.getProperty("os.name").contains("window")) {
                    properties.store(new FileOutputStream(System.getProperty("user.home") + "\\config.properties"), null);
                } else {
                    properties.store(new FileOutputStream(System.getProperty("user.home") + "/config.properties"), null);
                }
            } catch (IOException ex) {
                JOptionPane.showMessageDialog(null, "Errore salvataggio file: " + fileProperties + "\nErrore: " + ex.getMessage());
            }
        }
    SI

  7. #7
    ok ho un problemino:
    codice:
    public class Property {
    
        private static String fileProperties = "config.properties";
    
        public static synchronized String getString(String key) throws IOException {
            String result = "";
            Properties props = new Properties();
            props.load(new FileInputStream(fileProperties));
            result = props.getProperty(key);
            return result;
        }
    
        public static synchronized void setProperty(String key, String value) throws IOException {
            Properties properties = new Properties();
            properties.load(new FileInputStream(fileProperties));
            properties.setProperty(key, value);
            if (System.getProperty("os.name").contains("window")) {
                properties.store(new FileOutputStream(System.getProperty("user.home") + "\\" + fileProperties), null);
            } else {
                properties.store(new FileOutputStream(System.getProperty("user.home") + "/" + fileProperties), null);
            }
        }
    }
    richiamo il metodo:
    codice:
        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
            try {
                Property.setProperty("ciao", "core");
            } catch (FileNotFoundException ex) {
                JOptionPane.showMessageDialog(null, ex.getMessage());
            } catch (IOException ex) {
                JOptionPane.showMessageDialog(null, ex.getMessage());
            }
        }
    il file c'è però mi compare sempre l'errore:
    config.properties (No such file o directory).

  8. #8
    Prova a farti stampare il percoso in cui va a leggere o scrivere (System.getProperty("user.home") + "\\" + fileProperties), )

  9. #9
    codice:
        public static synchronized void setProperty(String key, String value) throws IOException {
            Properties properties = new Properties();
            properties.load(new FileInputStream(fileProperties));
            properties.setProperty(key, value);
            if (System.getProperty("os.name").contains("window")) {
                properties.store(new FileOutputStream(System.getProperty("user.home") + "\\" + fileProperties), null);
            } else {
                properties.store(new FileOutputStream(System.getProperty("user.home") + "/" + fileProperties), null);
                JOptionPane.showMessageDialog(null, System.getProperty("user.home") + "/" + fileProperties);
            }
        }
    sto su un mac quindi mi dovrei far stampare il percorso nell'else.
    cmq nn ci arriva proprio al metodo in quanto l'optionpane nn esce.
    anche commentando la riga
    JOptionPane.showMessageDialog(null, ex.getMessage());
    nel catch quando richiamo il metodo.

  10. #10
    ho aggiunto il main per farmi stampare il path:
    codice:
        public static void main (String[] arg) {
            JOptionPane.showMessageDialog(null, System.getProperty("user.home") + "/" + fileProperties);
        }
    il path è corretto.
    l'errore sta da un'altra parte.
    o come lo richiamo o proprio nel metodo setProperty.

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.