Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [JAVA] Query MYSQL

  1. #1

    [JAVA] Query MYSQL

    Ciao a tutti,
    premetto che sono ancora alle prime armi con Java e Mysql e ho ancora molto da imparare.
    L'intenzione iniziale era quella di costruire un'applicazione che mi permettesse di lavorare su dati memorizzati su un server Mysql remoto. Fin qui tutto ok: Mysql è stato installato su un server Debian e i dati sono accessibili da remoto tramite il suo client.
    Con l'aiuto di Eclipse edito la seguente applicazione java
    codice:
    package databaseclienti;
    
    import java.sql.*;
    
    public class Clienti {
    	
    	public static Connection conn;
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    //		Connessione al server MySql
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                Connection conn=DriverManager.getConnection
                        ("jdbc:mysql://192.168.1.4/cv" +
                        "?user=matteo&password=***");
                System.out.println("Connesso");
            }
            catch (Exception ex1) {
                System.out.println("Non connesso! Errore: ");
                System.out.println(ex1.getMessage());
            }
    	
    //		Ricerca
            Statement stmt = null;
            ResultSet srs = null;
    		try {
    			stmt = conn.createStatement();
    			srs = stmt.executeQuery
    				("SELECT cognome FROM lista");
    			while (srs.next()) {
    				String cognome = srs.getString("cognome");
    				System.out.println(cognome);
    			}
    		}
    		catch (Exception ex2) {
    			System.out.println("Errore: ");
    			System.out.println(ex2.getMessage());
    		}
    		
    
    	}
    
    }
    E ottengo il seguente output:
    Connesso
    Errore:
    null
    Nonostante i miei sforzi non sono riuscito a capire l'errore se non nel fatto che riguarda la Query.
    Sono le benvenute correzioni e critiche.

    Grazie

    Matteo

  2. #2
    fai un printStackTrace e vedi qual'è la linea di codice che genera l'eccezione... ma immagino che sia conn = null
    Al mio segnale... scatenate l'inferno!

  3. #3
    Ho fatto quello che mi hai consigliato ed ecco l'output
    codice:
    Connessojava.lang.NullPointerException
    Errore: 
    null
    
    	at databaseclienti.Clienti.main(Clienti.java:30)

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Il problema sta nel fatto che tu dichiari e inizializzi la variabile conn (di tipo Connection) all'interno di un blocco try/catch, ma la usi anche al suo esterno.

    Devi dichiararla all'esterno (meglio se a livello di classe) e poi potrai usarla ovunque.

    Non puoi fare una cosa del genere, per lo scope delle variabili:
    codice:
    try {
       Connection conn = ...;
    } catch ...
    
    conn.createStatement();
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Forse sto per dire una immensa ca%%ata...
    ma nel codice la variabile 'conn' non viene già dichiarata a livello di classe?
    codice:
    package databaseclienti;
    
    import java.sql.*;
    
    public class Clienti {
    	
    	public static Connection conn;
    ...

  6. #6
    Nel primo try con la riga

    codice:
    Connection conn=DriverManager.getConnection("jdbc:mysql://192.168.1.4/cv" +"?user=matteo&password=***");
    tu definisci e istanzi una nuova variabile conn visibile solo all'interno del blocco try in cui è dichiarata.
    Nel secondo try tu fai riferimento alla variabile conn della classe la quale non è stata inizializzata.

    Per risolvere il problema devi sostituire la riga di prima con

    codice:
    conn=DriverManager.getConnection("jdbc:mysql://192.168.1.4/cv" +"?user=matteo&password=***");
    Al mio segnale... scatenate l'inferno!

  7. #7
    :master: allora se ho ben capito il problema era che la variabile 'conn' che dichiaravo a livello di classe non veniva utilizzata, ma veniva usata un'altra variabile 'conn' che ha lo stesso nome ma è diversa in quanto dichiarata nel blocco try...

    Fatta la modifica tutto funzione !
    Grazie per l'aiuto, ma non preoccupatevi mi rifarò vivo presto con altri dubbi...

    Matteo

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.