ecco compilando questo programma, mi da i seguenti erroricodice: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!"); } } }
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

Rispondi quotando