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

    Qual'è il metodo migliore per salvare dati?

    La domanda è molto semplice, mi trovo a dover salvare dei dati, ed essendo neofita di java non so bene come fare,io avevo in mente qualcosa tipo mysql, che però non necessiti di essere insallato, in pratica mi serve una libreria che mi permetta di salvare e rileggere dati, magari tutto con comandi sql, cosa mi consigliate?

    grazie.

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Qual'è il metodo migliore per salvare dati?

    Originariamente inviato da Massi30
    La domanda è molto semplice, mi trovo a dover salvare dei dati, ed essendo neofita di java non so bene come fare,io avevo in mente qualcosa tipo mysql, che però non necessiti di essere insallato, in pratica mi serve una libreria che mi permetta di salvare e rileggere dati, magari tutto con comandi sql, cosa mi consigliate?

    grazie.
    Derby DBMS è quello che fa per te!

    http://www.javastaff.com/article.php...80905184145446
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Grazie mille per la dritta, ho due domande, la prima riguarda il modo in cui chiudere una connessione, non ho trovato un gran che a riguardo delle classi di derby, la soconda è io ho l'indirizzo del db che è:
    codice:
    C:\Documents and Settings\Administrator\Documenti\Nuova cartella\db
    ma come è facile intuire non è molto portabile, quello che però non riesco a fare è utilizzare una dicitura tipo
    codice:
    /db
    per staccare l'applicazione dalla mia macchina, come posso fare?

    edit:
    C'è un altra cosa che non capisco, perchè se scrivo così funzona

    codice:
            
            try 
            {
                Connection connection = DriverManager.getConnection(connectionURL);
                PreparedStatement preparedStatement = connection.prepareStatement("select*
                from cd");
                ResultSet set2 = preparedStatement.executeQuery();
                while (set2.next())
                {
                     String album = set2.getString("titolo");
                     System.out.println("Titolo: " + album);
                }
            }
            catch (SQLException ex)
            {
                System.err.println("Impossibile stabilire una connessione con il database.");
                ex.printStackTrace();
            }
    mentre così non funzione
    codice:
        
            try 
            {
                Connection connection = DriverManager.getConnection(connectionURL);
            }
            catch (SQLException ex)
            {
                System.err.println("Impossibile stabilire una connessione con il database.");
                ex.printStackTrace();
            }
            
            PreparedStatement preparedStatement = connection.prepareStatement("select * from 
            cd");
            ResultSet set2 = preparedStatement.executeQuery();
            while (set2.next())
            {
                String album = set2.getString("titolo");
                System.out.println("Titolo: " + album);
            }
    mi restituisce l'errore

    codice:
     
    cannot find simbol

  4. #4
    Ho dimenticato di specificare che l'errore è relativo all'oggetto connection

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Massi30
    Grazie mille per la dritta, ho due domande, la prima riguarda il modo in cui chiudere una connessione, non ho trovato un gran che a riguardo delle classi di derby,
    Basta chiamare il metodo close() del tuo oggetto Connection.

    Originariamente inviato da Massi30
    la soconda è io ho l'indirizzo del db che è:
    codice:
    C:\Documents and Settings\Administrator\Documenti\Nuova cartella\db
    ma come è facile intuire non è molto portabile, quello che però non riesco a fare è utilizzare una dicitura tipo
    codice:
    /db
    per staccare l'applicazione dalla mia macchina, come posso fare?
    Potresti usare FileSystemView.getFileSystemView().getDefaultDirec tory() per ottenere la "cartella di default". Su Mac OS X (che uso) restituisce la mia home (così come sui sistemi Linux). Su Windows dovrebbe restituirti la cartella "Documenti" ma non ne sono sicuro.

    Originariamente inviato da Massi30
    edit:
    C'è un altra cosa che non capisco, perchè se scrivo così funzona

    mentre così non funzione
    codice:
        
            try 
            {
    ---->            Connection connection = DriverManager.getConnection(connectionURL);
            }
            catch (SQLException ex)
            {
                System.err.println("Impossibile stabilire una connessione con il database.");
                ex.printStackTrace();
            }
            
            PreparedStatement preparedStatement = connection.prepareStatement("select * from 
            cd");
            ResultSet set2 = preparedStatement.executeQuery();
            while (set2.next())
            {
                String album = set2.getString("titolo");
                System.out.println("Titolo: " + album);
            }
    mi restituisce l'errore

    codice:
     
    cannot find simbol
    Ehm, il tuo oggetto 'connection' è visibile solo all'interno del try! Fai così:
    codice:
    Connection connection = null;
    try {
        connection = DriverManager.getConnection(connectionURL);
    } ...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Allora ho provato i tuoi consigli, ma non sono venuto a capo di nulla, il mio programma al momento è:
    codice:
    import java.sql.*;
    import javax.swing.filechooser.FileSystemView;
    
    
    public class ProvaBatabase
    {
        public static void main(String args[])
        {
            try
            {
                Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
             }
             catch (java.lang.ClassNotFoundException ex)
             {
                 System.err.println("Impossibile caricare il driver.");
                 ex.printStackTrace();
             }
             
             Connection connection;
             String connectionURL = "jdbc:derby:";                // driver usato
             connectionURL += "c:/documents and settings/administrator/documenti/nuova cartella/db"; // path
             
             try 
             {
                 connection = DriverManager.getConnection(connectionURL);
             }
             catch (SQLException ex) 
             {
                 System.err.println("Impossibile stabilire una connessione con il database.");
                 ex.printStackTrace();
             }
             
                 PreparedStatement preparedStatement = connection.prepareStatement("select * from tabelle_nutrizionali");
                 ResultSet set2 = preparedStatement.executeQuery();
                 connection.close();
        }
    }
    mi segnala comunque gli errori in
    codice:
    variable connection might not have been initialized
    PreparedStatement preparedStatement = connection.prepareStatement("select * from tabelle_nutrizionali");                            ^

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Massi30
    mi segnala comunque gli errori in
    codice:
    variable connection might not have been initialized
    PreparedStatement preparedStatement = connection.prepareStatement("select * from tabelle_nutrizionali");                            ^
    Ehm... queste sono le basi di Java... E l'errore parla da solo: "la variabile connection potrebbe non essere inizializzata". Guarda come hai dichiarato la variabile connection:

    codice:
    Connection connection;
    (ovvero non le hai dato un valore di default)

    Cosa succede se si verifica un errore in
    codice:
    try {
        connection = DriverManager.getConnection(connectionURL);
    }
    ?

    Il controllo passa al blocco catch e la variabile connection resta non inizializzata! Quando poi fai connection.prepareStatement("select * from tabelle_nutrizionali") la macchina virtuale non saprebbe cosa fare perché in connection non c'è nulla! Non è che c'è null (altrimenti darebbe NullPointerException), non c'è niente di niente!

    Vuoi la soluzione? Guarda come ho dichiarato la variabile connection nel post precedente
    Ah, nel caso in cui durante l'apertura della connessione qualcosa andasse storto è inutile proseguire, non potrai creare lo statement da una connessione fallita!
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Ho modificato il codice, ora è così, ma il problema ora è che la connessione non funziona, rimane sempre null
    codice:
             Connection connection = null; 
             String connectionURL = "jdbc:derby:";                // driver usato
             connectionURL += "c:/documents and settings/administrator/documenti/nuova cartella/db"; // path
             
             try 
             {
                 connection = DriverManager.getConnection(connectionURL);
             }
             catch (SQLException ex) 
             {
                 System.err.println("Impossibile stabilire una connessione con il database.");
                 ex.printStackTrace();
             }
             
             try 
             {
                if(connection == null)
                {
                    PreparedStatement preparedStatement = connection.prepareStatement("select * from tabelle_nutrizionali");
                    ResultSet set2 = preparedStatement.executeQuery();
                    connection.close();
                }
             }
             catch (SQLException ex) 
             {
                 System.err.println("Interrogazione fallita");
                 ex.printStackTrace();
             }
    un altra cosa, mi hai suggerito ti utilizzare
    codice:
    FileSystemView.getFileSystemView().getDefaultDirectory()
    ma come già detto restituisce nel mio caso: la radice cioè la cartella documenti, ma se invece volessi il path della cartella dove risiede il programma come dovrei fare?

    Edit

    Ho trovato come risolvere il secondo problema, basta utilizzare
    codice:
    connectionURL += System.getProperty("user.dir")+"/db"; // path

  9. #9
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Massi30
    Ho modificato il codice, ora è così, ma il problema ora è che la connessione non funziona, rimane sempre null
    codice:
             Connection connection = null; 
             String connectionURL = "jdbc:derby:";                // driver usato
             connectionURL += "c:/documents and settings/administrator/documenti/nuova cartella/db"; // path
    :master:
    Il database lo hai già creato via terminale? Come lo crei? Il path è corretto?

    Originariamente inviato da Massi30
    un altra cosa, mi hai suggerito ti utilizzare
    codice:
    FileSystemView.getFileSystemView().getDefaultDirectory()
    ma come già detto restituisce nel mio caso: la radice cioè la cartella documenti, ma se invece volessi il path della cartella dove risiede il programma come dovrei fare?
    Ti ho suggerito quel metodo perché pensavo volessi mettere il database in una cartella particolare del sistema. Su Mac OS X ad esempio i file e le cartelle che servono ad un programma per lavorare vanno messi in /Users/UTENTE/Library/Application Support/NOME_PROGRAMMA. Su Windows non so se c'è qualche "regola" da seguire o se c'è l'anarchia più totale
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  10. #10
    Si, il database l'ho create, e funziona, l'ho fatto da terminale e l'ho provato, il path è corretto, unica cosa forse che potrebbe essere, ma tu non puoi aiutarmi, non essendo utente win, è il fatto che non posso utilizzare il backslash, in quanto dpvrebbe essere un carattere speciale, quindi ho provato sia ad utilizzare il doppio backslash sia il singolo slash, ma nulla, quindi la domanda è girata agli utenti win, per il resto si, in windows l'anarchia è totale, non per altro è l'ambiente prediletto per i virus

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.