Cia schumi.
Io, purtroppo, mi ci sono scontrato più volte con JDBC-ODBC (sebbene agli inizi lo trovassi molto comodo, tanto che, lo sai, ne ho scritto anche una pillola di là). Non tanto sulla questione Microsoft Access, con cui mi sono dovuto comunque scontrare al passaggio sui sistemi a 64 bit e, maggiormente, quando ho avuto a che fare con macchine in cui c'è Java 8 installato, quanto con la connessione a DBMS diversi... in particolare su DB2. Ho trovato molti (ma molti) problemi nella conversione dei tipi di dato (alcuni tipi di dato, semplicemente, si rifiutava di leggerli, altri perdevano in precisione o venivano completamente stravolti) e molti altri nella lettura di grossi recordset (ad un certo punto, semplicemente, smetteva di leggere i recordset e sembrava che i risultati fossero finiti, quando non era così). Una cosa molto fastidiosa con cui mi sono dovuto scontrare è l'impossibilità di effettuare letture dei campi per un determinato record che non fossero esattamente in ordine; esempio:
SELECT campo1, campo2, campo3
FROM tabella
Una cosa di questo tipo è impossibile:
ResultSet rs = ...;
while( rs.next() ) {
String campo2 = rs.getString(2); // Legge il secondo campo
String campo1 = rs.getString(1); // non è in grado di "tornare" al campo precedente: exception
String campo3 = rs.getString(3);
}
In questo modo sei costretto a reperire prima tutti i campi del ResultSet esattamente nell'ordine 1, 2, 3 e poi usarli nel codice anche quando non ne avresti bisogno...
Insomma... tante cose che messe tutte assieme rendono davvero la vita difficile.