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("'", "''");
}
}
}