ghhh... quindi come adatto il codice per forzare il jdbc ???
questa è la classe che uso ( tra l'altro è la tua ed è sempre andata da dio !!! )...


codice:
public class SqlHelper {
	
	LogFile logErrori = new LogFile("log\\erroriConsole.log");


	// INIZIALIZZO VARIABILI
	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

	
	// COSTRUTTORE PASSANDO SOLO IL DSN
	public SqlHelper(String nomeDSN) {
		this.nomeDSN = nomeDSN;
		attributi = new String[0][0];
		connesso = false;
	}


	// COSTRUTTORE PASSANDO DSN E ATTRIBUTI
	public SqlHelper(String nomeDSN, String [][] attributi) {
		this.nomeDSN = nomeDSN;
		this.attributi = attributi;
		connesso = false;
	}


	// FUNZIONE PER CONNETTERSI AL DATABASE
	public boolean connetti() {
		
		connesso = false;
		String conString = "";
		try {
        	 // Carico il bridge JDBC-ODBC per la connessione con il database
			System.out.println("Carico il bridge JDBC-ODBC");
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

			System.out.println("Preparo la stringa di connessione") ;
			conString = "jdbc:odbc:" + nomeDSN;   // Il nome del DSN può anche essere vuoto!!
			System.out.println("Stringa di connessione = " + conString) ;
			
			// 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
			System.out.println("Tentativo di connnessione");
			db = DriverManager.getConnection( conString );
			
			// La connessione è avvenuta con successo
			System.out.println("Connnessione db effettuata con successo");
			connesso = true;
			
		} catch (Exception e) {
			
			e.printStackTrace();
			
			errore = e.getMessage(); 
			// SCRITTURA LOG
			try {
				logErrori.log("Errore : SqlHelper.connetti()",e.getMessage()+ " " + conString);
			} catch (IOException e1) {
				e1.printStackTrace();
			} 
		}
		return connesso;
	}


	//	Esegue una query di selezione dati sul Database
	// 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( (String[]) record.clone() );
			}	
			rs.close();     // Chiudo il ResultSet
			stmt.close();   // Chiudo lo Statement
		} catch (Exception e) { 
			e.printStackTrace(); 
			errore = e.getMessage(); 
			// SCRITTURA LOG
			try {
				logErrori.log("Errore : SqlHelper.eseguiQuery()",query + "\n" + e.getMessage());
			} catch (IOException e1) {
				e1.printStackTrace();
			} 
		}
      	return v;
	}


	// Esegue una query di aggiornamento sul Database ( INSERT, UPDATE, DELETE )
	// 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();
			System.out.println(query);
			numero = stmt.executeUpdate(query);
			risultato = true;
			stmt.close();
		} catch (Exception e) {
			e.printStackTrace();
			errore = e.getMessage();
			risultato = false;
			// SCRITTURA LOG
			try {
				logErrori.log("Errore : SqlHelper.eseguiAggiornamento()",query + "\n" + e.getMessage());
			} catch (IOException e1) {
				e1.printStackTrace();
			} 
		}
		return risultato;
	}


	// Chiude la connessione con il Database
	public void disconnetti() {
		try {
			System.out.println("Diconnnessione in corso");
			db.close();
			connesso = false;
			System.out.println("Diconnnessione effettuata correttamente");
		} catch (Exception e) { 
			e.printStackTrace(); 
			// SCRITTURA LOG
			try {
				logErrori.log("Errore : SqlHelper.disconnetti()",e.getMessage());
			} catch (IOException e1) {
				e1.printStackTrace();
			} 
		}
	}


	// Ritorna TRUE se la connessione con il Database è attiva
	public boolean isConnesso() {
		return connesso;
	}   
	
	
	// Ritorna il messaggio d'errore dell'ultima eccezione sollevata	
	public String getErrore(){
		return errore;
	}
	
	
	// Funzione per pulizia stringa
	public String getStringa(String stringa) {
	  if (stringa == "" || stringa==null) {
		return "NULL";
	  } else {
		String nuovaStringa = stringa.replace('|', '-');
		return nuovaStringa.replaceAll("'", "''");
	  }
	}
	
	       
}