Risolto.
A chi dovesse interessare, il problema non era sul codice postato ma sulla classe che implementa il nDao: non mi ricordavo di chiudere il relativo PreparedStatement.
Con database access funziona ugualmente, ma con sqlserver, da quello che ho capito dal sito di microsoft, se passo alla stessa connection uno statement senza aver chiuso il procedente, viene creata (clonata ?) un'altra connessione e quindi la mia transazione iniziata sulla prima connessione tramite setAutoComit(false) non si chiude e mi da l'errore indicato.
Questo (se sono riuscito a spiegarmi), a chi dovesse servire.
Ciao
codice:
public boolean add(NestVO entry, Db dataBase) {
boolean result = false;
if(dataBase.isConnesso()) {
String sqlString = "INSERT INTO NestGen (idNest, dtaNest, descNest, "
+ "idMacc, noteNest, evaso) "
+ "VALUES (?, ?, ?, ?, ?, ?)";
try {
PreparedStatement stmt = dataBase.prepareStatement(sqlString);
stmt.setInt(1, entry.getIdNest());
stmt.setDate(2, DateHelper.dateToSqlDate(entry.getData()));
stmt.setString(3, entry.getDescrizione());
stmt.setString(4, entry.getIdMacc());
stmt.setString(5, entry.getNoteNest());
stmt.setBoolean(6, entry.getEvaso());
int n = stmt.executeUpdate();
if(n == 1) result = true;
stmt.close();
stmt = null;
} catch (SQLException e) {
e.printStackTrace();
result = false;
}
}
return result;
}
PS: la riga "stmt = null" è inutile scriverla secondo voi ?
Grazie