Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    15

    [java] nullpointerexception mysql

    Tutte le volte che provo a fare la select che aggiungo sotto mi da l'errore NullPointerException, non so più che fare!
    La connessione che gli passo è corretta e funziona, non riesco a capire dove possa essere l'errore.

    Questo è il codice della classe che interroga il db:
    codice:
    	
    	Connection con;
    	String tableName = "documents";
    	
    	public DaoDocuments(Connection con) {
    		this.con=con;
    	}
    
            public List<Documents> getUnmodifiedRecord() throws SQLException {
    	         String sql = "SELECT * from documents";
    	          PreparedStatement pstmt = con.prepareStatement(sql);
    	          ResultSet rs = pstmt.executeQuery();
    	          List<Documents> records = new ArrayList<Documents>();
    	          while(rs.next()) {;
    		 records.add(rs.getString(2));
    	}
    	return records;
    	}
    La connessione invece viene create da questa routine:
    codice:
    	
            public static Connection bConnection(String dbUrl) {
    		Connection con = null;
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
    			con = DriverManager.getConnection(dbUrl);
    		} catch (ClassNotFoundException e) {
    			System.out.println(e.getMessage());
    			e.printStackTrace();
    		} catch (SQLException e) {
    			System.out.println(e.getMessage());
    			e.printStackTrace();
    		}
    		return con;
    	}
    L'errore che mi da è questo:
    codice:
    Exception in thread "main" java.lang.NullPointerException
    	at com.mysql.jdbc.PreparedStatement.asSql(PreparedStatement.java:641)
    	at com.mysql.jdbc.PreparedStatement.asSql(PreparedStatement.java:579)
    	at com.mysql.jdbc.PreparedStatement.toString(PreparedStatement.java:4049)
    	at java.lang.String.valueOf(Unknown Source)
    	at java.lang.StringBuffer.append(Unknown Source)
    	at com.mysql.jdbc.trace.Tracer.printParameters(Tracer.aj:240)
    	at com.mysql.jdbc.trace.Tracer.printEntering(Tracer.aj:167)
    	at com.mysql.jdbc.trace.Tracer.entry(Tracer.aj:126)
    	at com.mysql.jdbc.trace.Tracer.ajc$before$com_mysql_jdbc_trace_Tracer$1$f51c62b8(Tracer.aj:45)
    	at com.mysql.jdbc.Connection.registerStatement(Connection.java)
    	at com.mysql.jdbc.Statement.<init>(Statement.java:265)
    	at com.mysql.jdbc.PreparedStatement.<init>(PreparedStatement.java:498)
    	at com.mysql.jdbc.Connection.clientPrepareStatement(Connection.java:2185)
    	at com.mysql.jdbc.Connection.prepareStatement(Connection.java:4782)
    	at com.mysql.jdbc.Connection.prepareStatement(Connection.java:4687)
    	at com.dao.DaoDocuments.getUnmodifiedRecord(DaoDocuments.java:27)
    	at main.Main.main(Main.java:22)
    Dove è che sbaglio?

  2. #2
    Qual'è la riga 27 del tuo DaoDocuments?
    Al mio segnale... scatenate l'inferno!

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    15
    La riga 27 è questa:

    codice:
            PreparedStatement pstmt = con.prepareStatement(sql);

  4. #4
    Allora con è null. Sicuro che la inizializzi? Se si... come?
    Al mio segnale... scatenate l'inferno!

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    15
    con viene inizializzata quando faccio partire il programma. Ti posto la routine che crea la connessione, la passa al main che poi inizializza con quella connessione il costruttore di DaoDocuments

    codice:
     	
    public class DbConn {
    
             public static Connection bConnection(String dbDriver, String dbUrl) {
    		Connection con = null;
    		try {
    			Class.forName(dbDriver).newInstance();
    			con = DriverManager.getConnection(dbUrl);
    		} catch (ClassNotFoundException e) {
    			System.out.println(e.getMessage());
    			e.printStackTrace();
    		} catch (SQLException e) {
    			System.out.println(e.getMessage());
    			e.printStackTrace();
    		} catch (InstantiationException e) {
    			e.printStackTrace();
    		} catch (IllegalAccessException e) {
    			e.printStackTrace();
    		}
    		return con;
    	}
    }
    Questa viene chiamata dal main, che poi la passa al costruttore della DaoDocuments.

    codice:
    	public static void main(String[] args) {
    		Connection con = DbConn.bConnection(driver, url);
    		
    		DaoDocuments d = new DaoDocuments(con);
    	        List result = d.eseguiQuery();
            }

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 © 2026 vBulletin Solutions, Inc. All rights reserved.