scusate ho fatto una leggerezza da principiante
codice:
/*
 * Classe dedicata alla gestione del Database.
 * Gestisce l'apertura e la chiusura della connessione col Database
 * Fornisce i metodi per l'esecuzione delle query sul Database
 */
import java.sql.*;
import java.util.Vector;

public class ODBCDatabase {

   private String nomeDSN;         // Nome DSN dell'origine dati ODBC
   private String[][] attributi;   // Insieme di attributi da usare per la connessione
   private String errore;          // Stringa contenente un eventuale messaggio di errore
   private Connection db;          // Oggetto che rappresenta la connessione col DB
   private boolean connesso;       // Flag che indica se il DB è connesso o meno

   public ODBCDatabase(String nomeDSN) {
      this.nomeDSN = nomeDSN;
      attributi = new String[0][0];
      connesso = false;
   }

   public ODBCDatabase(String nomeDSN, String [][] attributi) {
      this.nomeDSN = nomeDSN;
      this.attributi = attributi;
      connesso = false;
   }

   public boolean connetti() {
      connesso = false;
      try {

         // Carico il bridge JDBC-ODBC per la connessione con il database
         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

         String conString = "jdbc:odbc:" + nomeDSN;   // Il nome del DSN può anche essere vuoto!!

         // Controllo se ci sono attributi ausiliari da usare per la connessione
         if (attributi.length > 0) {

            // Uso gli attributi per la connessione
            for (int i=0; i<attributi.length; i++) {
               conString += ";" + attributi[i][0] + "=" + attributi[i][1];
            }
         }

         // Effettuo la connessione
         db = DriverManager.getConnection( conString );

         // La connessione è avvenuta con successo
         connesso = true;
      } catch (Exception e) { errore = e.getMessage(); }

      return connesso;
   }

   // Esegue una query di selezione dati sul Database
   // query: una stringa che rappresenta un'istruzione SQL di tipo SELECT da eseguire
   // colonne: il numero di colonne di cui sarà composta la tupla del risultato
   // ritorna un Vector contenente tutte le tuple del risultato
   public Vector eseguiQuery(String query) {
      Vector v = null;
      String [] record;
      int colonne = 0;
      try {
         Statement stmt = db.createStatement();     // Creo lo Statement per l'esecuzione della query
         ResultSet rs = stmt.executeQuery(query);   // Ottengo il ResultSet dell'esecuzione della query
         v = new Vector();
         ResultSetMetaData rsmd = rs.getMetaData();
         colonne = rsmd.getColumnCount();

         while(rs.next()) {   // Creo il vettore risultato scorrendo tutto il ResultSet
            record = new String[colonne];
            for (int i=0; i<colonne; i++) record[i] = rs.getString(i+1);
            v.add(record.clone() );
         }

         rs.close();     // Chiudo il ResultSet
         stmt.close();   // Chiudo lo Statement
      } catch (Exception e) { e.printStackTrace(); errore = e.getMessage(); }

      return v;
   }

   // Esegue una query di aggiornamento sul Database
   // query: una stringa che rappresenta un'istuzione SQL di tipo UPDATE da eseguire
   // ritorna TRUE se l'esecuzione è adata a buon fine, FALSE se c'è stata un'eccezione
   public boolean eseguiAggiornamento(String query) {
      int numero = 0;
      boolean risultato = false;
      try {
         Statement stmt = db.createStatement();
         numero = stmt.executeUpdate(query);
         risultato = true;
         stmt.close();
      } catch (Exception e) {
         e.printStackTrace();
         errore = e.getMessage();
         risultato = false;
      }
      return risultato;
   }

   // Chiude la connessione con il Database
   public void disconnetti() {
      try {
         db.close();
         connesso = false;
      } catch (Exception e) { e.printStackTrace(); }
   }

   public boolean isConnesso() { return connesso; }   // Ritorna TRUE se la connessione con il Database è attiva
   public String getErrore() { return errore; }       // Ritorna il messaggio d'errore dell'ultima eccezione sollevata
}
mentre la mia classe è

codice:
public class provaDB{
	public static void main(String [] args){
		BufferedReader IN=new BufferedReader(new InputStreamReader(System.in));
		boolean temp;
		Vector rs;
		ODBCDatabase db=new ODBCDatabase("javaAttivita");
		String dataInizio;
		String dataFine;
		String[] record;
		if(db.connetti()){
			System.out.print("Pulisco tabella temporanea eventi ");
			if(!db.eseguiAggiornamento("DELETE FROM tempEvents"))
				return;
			System.out.println("Fatto");
			System.out.print("Aggiorno tabella temporanea eventi ");
			if(!db.eseguiAggiornamento("INSERT INTO tempEvents ( data, idUser ) SELECT DISTINCT Events.Date, Events.UsersID FROM Events WHERE (((Events.Date) Is Not Null)) ORDER BY Events.Date DESC;"))
				return;
			System.out.println("Fatto");
			System.out.print("Pulisco tabella temporanea utenti ");
			if(!db.eseguiAggiornamento("DELETE FROM tempUsers"))
				return;
			System.out.println("Fatto");
			System.out.print("Aggiorno tabella temporanea utenti ");
			if(!db.eseguiAggiornamento("INSERT INTO tempUsers ( UserID, [User], dataInizio ) SELECT users.UserID, users.User, users.dataInizio FROM users;"))
				return;
			System.out.println("Fatto");
			System.out.print("Carico defaults ");
			rs=db.eseguiQuery("SELECT TOP 1 tempEvents.data FROM tempEvents ORDER BY data ASC");
			record = (String[]) rs.elementAt(0);
			dataInizio=(record[0].replace("-","")).substring(0,8);
			System.out.println(". ");
			String qry="SELECT DISTINCT TOP 1 tempEvents.data, DatePart(\"w\",tempEvents.Data) AS dp FROM tempEvents WHERE (DatePart(\"w\",tempEvents.Data))=4 ORDER BY tempEvents.data DESC 
			rs=db.eseguiQuery(qry);
			if(rs!=null){
				record = (String[]) rs.elementAt(0);
				dataFine=(record[0].replace("-","")).substring(0,8);
				System.out.println("df "+dataFine);
			}
			db.disconnetti();
			
		}else{
			//connessione non riuscita
			System.out.println("ERRORE:"+db.getErrore());
		}
	}
}