codice:
import java.sql.*;
import java.util.*;

class RicetteIngredienti {
  private Statement stm;
  private ResultSet rs;
  private Connection con;
  
  boolean connetti() {
    boolean bool = false;
    try {
    	   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
 	      Connection con = DriverManager.getConnection("jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=C:\\Programmi\\dbricette_1_3_049.mdb");
	  stm = con.createStatement();
	  
	  bool = true;
	} catch(Exception e) {bool=false;e.printStackTrace();}
	return bool;
  }
  
  void eseguiOperazioni() {
    try {
      // Qui, estrai sempre i tuoi ingredienti dalla tabella Ricette
      rs = stm.executeQuery("SELECT id,ingredienti FROM Tempo");
      while(rs.next()) {
        // Id ricetta
        int id = rs.getInt("id");
        String ingredienti = rs.getString("ingredienti");
        // Suddivide gli ingredienti in token
        Scanner parser = new Scanner(ingredienti);
        parser.useDelimiter("=");
        // Prendo ogni token (ingrediente)
        while(parser.hasNext()) {
          String ingrediente = parser.next();
	      // Restituisce -1 se l'ingrediente NON è presente nella tabella Ingredienti
	      int id_ingrediente = isIngredientePresent(ingrediente);
		  System.out.println(id_ingrediente);
		  Statement stm1 = con.createStatement();
	      if(id_ingrediente != -1) {
	        stm1.executeUpdate("INSERT INTO Ingredienti(id_ingrediente,id_ricetta,ingrediente) VALUES('"+id_ingrediente+"','"+id+"','"+ingrediente+"')");
	      } else {
	        // Restituisce 
	        id_ingrediente = ultimoElementoIngredienti();
	        stm1.executeUpdate("INSERT INTO Ingredienti(id_ingrediente,id_ricetta,ingrediente) VALUES('"+(id_ingrediente+1)+"','"+id+"','"+ingrediente+"')");
	      }
        }
      }
	} catch(SQLException sqlex) {sqlex.printStackTrace();}
  }
  
  // Funzioni
  private int ultimoElementoIngredienti() throws SQLException {
    Statement stm3 = con.createStatement();
  
    ResultSet rs3 = stm3.executeQuery("SELECT MAX(id_ingrediente) FROM Ingredienti");
    int ultima_riga = -1;
    while(rs3.next()) {
      // Questa è la colonna restituita, quindi dobbiamo leggere dentro di lei.
      ultima_riga = rs3.getInt("MAX(id_ingrediente)");
    }
	stm3.close();
	rs3.close();
    return ultima_riga;
  }

  private int isIngredientePresent(String ingrediente) throws SQLException {
    int id_ingrediente = -1; // Non presente
    Statement stm3 = con.createStatement();
    ResultSet rs3 = stm3.executeQuery("SELECT id_ingrediente FROM Ingredienti WHERE ingrediente = '"+ingrediente+"'");
    while(rs3.next()) {
      id_ingrediente = Integer.parseInt(rs3.getString("id_ingrediente"));
	  break;
    }
	stm3.close();
	rs3.close();
    return id_ingrediente;
  }
}

public class GestioneRicette {
public static void main(String[] args) {
		
	RicetteIngredienti ri;
     ri = new RicetteIngredienti();
	if(ri.connetti()) {
	  ri.eseguiOperazioni();
	} else {
	  System.out.println("Non e' stato possibile stabilire la connessione!");
	}
	}

}
ecco compilando questo programma, mi da i seguenti errori
Excepiton in thread "main" java.lang:NullPointerException
at RicetteIngredienti.isIngredientePresent(gestioneri cette.java:68)
at RicetteIngredienti.eseguiOperazioni(.............. .........java:36)
at GestioneRicette.main(..............java:86)

insomma in tutte le funzioni che io richiamo.......
qualcuno sa darmi una mano?? grazie mille