Ciao a tutti, ho un piccolo problema con l'esecuzione di una query tramite Java su un database...non riesco a capire dove sbaglio e vorrei da voi un parere.

Le classi del progetto Java sono due, la prima è:
codice:
import java.sql.*;

public class InterfacciaDB {
	
	private Connection connection;
	private Statement statement;
	
	public InterfacciaDB(String database){
		String url=database,username="xyz",password="xyz";
		connection=null;
		
		//Carica il driver per la connessione
		try{
			Class.forName("com.mysql.jdbc.Driver");
			connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/"+url,username,password);
			System.out.println("Connesso al database...");
		}
		catch(ClassNotFoundException cnfex){
			System.err.println("Failed to load JDBC/ODBC driver");
			System.exit(1);
		}
		catch(SQLException sqlex){
			System.err.println("Unable To Connect");
			sqlex.printStackTrace();
		}
	}

public ResultSet esegui(String query, boolean update){
		ResultSet result=null;
		try{
			statement=connection.createStatement();
			if(update)statement.executeUpdate(query);
			else result=statement.executeQuery(query);
			statement.close();
		}
		catch(SQLException sqlex){
			sqlex.printStackTrace();
			return null;
		}
		catch(Exception e){
			System.out.println("Errore query SQL");	
			return null;
		}
		return result;
	}
	
public void closeConnection(){
		//Disconnessione
		try{
			connection.close();
		}
		catch(SQLException sqlex){
			System.err.println("Unable to disconnect");
			sqlex.printStackTrace();
		}
		System.out.println("Aggiornamento database effettuato.");
	}
la seconda classe sfrutta le funzioni della prima per inserire e selezionare dei dati nel database ed è così definita:
codice:
 
public class Elabora {

	private InterfacciaDB db;
        public Elabora(){
                db=new InterfacciaDB("ilnomedelmiodatabase");
		try{
			Esamina();
		}catch(Exception e){
			System.out.println("Errore caricamento interprete");
			e.printStackTrace();
		}
		db.closeConnection();
         }

         private void Esamina(){
                //altro codice di programma fino a giungere all'istruzione...
                Codice_comp=CodiceCompagnia(dato);
         }
          
         public int CodiceCompagnia(String dato){
		int Codice_comp=0;
		int risCerca=CercaCompagnia(dato);
		if(risCerca==0){
			String query_ins_comp="INSERT INTO compagnia ( Nome ) VALUES ('"+dato+"')";
			try{
				db.esegui(query_ins_comp,true);
				//Prelevo il codice associato all'ultima compagnia inserita
				String query_codice="SELECT Codice FROM compagnia WHERE Nome='"+dato+"')";
				ResultSet inserito=db.esegui(query_codice,false);
				Codice_comp=inserito.getInt("Codice");
			}catch(Exception e){System.out.println("Errore inserimento codice compagnia");}
		}else Codice_comp=risCerca;
		return Codice_comp;
	}

        public int CercaCompagnia(String Compagnia){
		String query_compagnie="SELECT * FROM compagnia";
		try{
			ResultSet comp_reg=db.esegui(query_compagnie,false);
			while (comp_reg.next()){
				String comp = comp_reg.getString("Nome");
				if(Compagnia.compareToIgnoreCase(comp)==0)return (int)(comp_reg.getInt("Codice"));
				//ritorna il codice se la compagnia è già registrata
			}
		}catch(Exception e){
			System.out.println("Errore ricerca");
		}
		//Ritorna 0 se la compagnia è nuova
		return 0;
	}
}

public static void main(String[] args){
		new Elabora();
	}
il problema è che eseguendo il programma ho questi messaggi stampati:
Connesso al database...
Errore ricerca
Errore inserimento codice compagnia


Non riesco a capire perchè? dove sbaglio? sembra che la query sql non venga accettata.

Sapete aiutarmi?