Dunque la soluzione da me adottata prevede un controllo sul tipo ENUM
codice:
if (resultSet.getString("TYPE_NAME").equals("ENUM")){
PreparedStatement ps = null;
ResultSet rs = null;
String sql = "SHOW COLUMNS FROM ".concat(tabName).concat(" LIKE '").concat(name).concat("'");
try{
// connessione al db
Class.forName(DRIVER);
Connection condb = DriverManager.getConnection(dburl.concat(dbName), dbusername, dbpassword);
// estrae il valore dei campi
ps = (PreparedStatement) condb.prepareStatement(sql);
rs = ps.executeQuery();
rs.next();
cenum = rs.getString("Type");
}
catch (Exception ex) {
throw new LibraryException("dati non pervenuti", ex);
}
}
con la query
codice:
String sql = "SHOW COLUMNS FROM ".concat(tabName).concat(" LIKE '").concat(name).concat("'");
ottengo una vista il cui secondo campo corrisponde al campo Type e in cui sono contenuti
i valori di default nel seguente formato
codice:
enum('uno','due','tre')
il cui valore lo riprendo così
codice:
cenum = rs.getString("Type");
è sufficiente trattare questa stringa con stringtokenizer e qualche substring per ottenere tutti gli item corrispondenti ai valori di default dell' enum