Connessione MySQL per applicazione java

di il
12 risposte

Connessione MySQL per applicazione java

Salve,
ho un problema con questa classe per la connessione al database
//metodo per l'inizializzazione
public static void inizializzazzione(String FileName)throws IOException, FileNotFoundException, ClassNotFoundException
{
//crea una istanza della classe Properties
Properties properties = new Properties();

FileInputStream fileInputStream = new FileInputStream(FileName);

properties.load(fileInputStream);// si associa l'input stream all' istanza della classe properties

driver = properties.getProperty("driver");
url = properties.getProperty("url");
admin = properties.getProperty("admin");
passwd = properties.getProperty("passwd");

//carichiamo il driver del database con metodo statico forName della classe Class
Class.forName(driver);

}

/**
* Metodo per la connessione al database mysql
*/
public static Connection getConnection() throws SQLException
{
return DriverManager.getConnection(url, admin, passwd);

}

/**
* Metodo per la chiusura della connessione
*/
public static void closeConnection() throws SQLException
{
connection.close();
}


}

12 Risposte

  • Re: Connessione MySQL per applicazione java

    Poi provo a testare la classe creata con questa

    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.SQLException;


    public class DBConnectionTest
    {
    public static void main(String[] args)
    {
    String fileName = "database.txt";


    try
    {
    ConnessioneDB.inizializzazione(fileName);
    }
    catch(IOException ioEx)
    {

    System.err.println(">>> IO Exception! <<<\n");
    System.err.println("Message: " + ioEx.getMessage());
    System.err.println("Stack trace: " + ioEx.getStackTrace());
    System.exit(1);
    }

    catch(ClassNotFoundException cnfEx)
    {
    System.err.println(">>> ClassNotFoundException! <<<\n");
    System.err.println("Message: " + cnfEx.getMessage());
    System.exit(1);
    }


    try
    {
    Connection connection = ConnessioneDB.getConnection();
    }

    catch(SQLException sqlEx)
    {
    System.err.println(">>> SQLException! <<<\n");
    System.err.println("SQLState: " + sqlEx.getSQLState());
    System.err.println("Message: " + sqlEx.getMessage());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    System.err.println("Stack trace: " + sqlEx.getStackTrace());
    System.exit(1);
    }

    finally
    {
    try
    {
    ConnessioneDB.closeConnection();
    }

    catch(SQLException sqlEx)
    {
    System.err.println(">>> SQLException! <<<\n");
    System.err.println("SQLState: " + sqlEx.getSQLState());
    System.err.println("Message: " + sqlEx.getMessage());
    System.err.println("Error code: " + sqlEx.getErrorCode());
    System.exit(1);
    }
    }


    }

    }

    non riesco però a capire perché mi restituisce l'eccezione riguardo la chiusura...
    Exception in thread "main" java.lang.NullPointerException
    at connessionedb.ConnessioneDB.closeConnection(ConnessioneDB.java:73)
    at connessionedb.DBConnectionTest.main(DBConnectionTest.java:56)

    qualcuno saprebbe dirmi il perché e come risolvere.
    grazie
  • Re: Connessione MySQL per applicazione java

    Poiche noi non abbiamo le righe e qui ti dice :

    at connessionedb.ConnessioneDB.closeConnection(ConnessioneDB.java:73)
    at connessionedb.DBConnectionTest.main(DBConnectionTest.java:56)

    dovresti postarci le istruzioni presenti alla riga 73 di ConnessioneDB e la riga 56 di DBConnessioneTest
  • Re: Connessione MySQL per applicazione java

    Si allora

    per la riga 73 c' è il metodo di chiusura
    public static void closeConnection() throws SQLException
    {
    connection.close(); RIGA 73
    }

    per la riga 55 è della classe test( quella del metodo main)
    try
    {
    ConnessioneDB.closeConnection(); RIGA 56
    }
  • Re: Connessione MySQL per applicazione java

    Mmm si sembra di capire da : ConnessioneDB.closeConnection();

    che , poiche li ti restituisce un null pointer exception , effettivamente la connessione non e' avvenuta e quindi provi a chiudere qualcosa che e' null
  • Re: Connessione MySQL per applicazione java

    Prova a controllare che valore assume ConnessioneDB sul quale chiami la close...
  • Re: Connessione MySQL per applicazione java

    Ah quindi non avviene la connessione,eventualmente sapresti dirmi come si può risolvere
  • Re: Connessione MySQL per applicazione java

    Ah scusami non avevo letto...
  • Re: Connessione MySQL per applicazione java

    Scusami ma non ho capito cosa dovrei fare
  • Re: Connessione MySQL per applicazione java

    Certo che è null...
    
    try
    {
    Connection connection = ConnessioneDB.getConnection();
    }
    
    quando fai questa chiamata la visibilità della variabile connection è limitata
    a quel blocco try catch.

    Dichiarala come all' inizio della classe
    
    public class DBConnectionTest
    {
    	public static void main(String[] args)
    	{
    		String fileName = "database.txt";
    		Connection connection=null;
    
    
    in modo tale che nel blocco try catch puoi richiamarla in questo modo
    
    try
    {
    	connection = ConnessioneDB.getConnection();
    }
    
    e avrà visibilità su tutta la classe.


    Poi un'altra cosa...la
    
    public static void closeConnection() throws SQLException
    {
    connection.close();
    } 
    
    sul file inizializzazzione.java non ti funzionerà ugualmente perché la variabile connection è dichiarata solo su DBConnectionTest quindi devi passare come parametro in closeConnection
    
    try
    {
    	ConnessioneDB.closeConnection(connection);
    }
    
    quindi
    
    public static void closeConnection(Connection conn) throws SQLException
    {
    conn.close();
    } 
    
    Mi sa che è meglio se prendi un bel manuale e studi ancora un pochettino.
  • Re: Connessione MySQL per applicazione java

    Le classi sono due una ConnessioneDB e l'altra per testare(quella con main) ConnessionDB naturalmente sono alle prime armi anche se
    effettivamente ci stavo arrivando che la visibilità era limitata infatti mi ero accorto che la connessione c'era semplicemente mettendo un if (connection != null)
  • Re: Connessione MySQL per applicazione java

    Grazie mille per l'aiuto
  • Re: Connessione MySQL per applicazione java

Devi accedere o registrarti per scrivere nel forum
12 risposte