Frage

SQL Server 200 Java 1.4 JBoss 3

Hallo, ich bekomme Ausnahmenachricht "Sie können während einer verwalteten Transaktion kein AutoCommit festlegen."

Code ist unten

    try {
                try {
                    connection = getConnection();
                } catch (Exception e) {
                    throw new ConnectionException(e.getMessage());
                }
                for(int i=0;i<recordIds.size();i++)
                {
                    String currentRecordId=(String)recordIds.get(i);
                    try
                    {
                    //exception on this line    connection.setAutoCommit(false);
                        preparedStatement = connection.prepareStatement(getSQL("PurgeRecordInDumpData"));  
                        preparedStatement.setLong(1,Long.parseLong(currentRecordId));
                        int numberOfUpdates=preparedStatement.executeUpdate();
                        if(numberOfUpdates!=1)
                        {
                            throw new Exception("Record with record id "+currentRecordId +"could not be purged.");
                        }
                        preparedStatement.close();
                        connection.commit();
                        listOfPurgedRecords.add(currentRecordId);
                    }
                    catch(Exception e)
                    {
                        connection.rollback();
                    }
                }
                return listOfPurgedRecords;

            }

Was ist Ursache für diese Ausnahme und was bedeutet das?

War es hilfreich?

Lösung

Der Fehler ist klar, Sie können nicht automatisch einstellen, während Sie sich in einer verwalteten Transaktion befinden. Sie sollten dies nicht einmal auf false setzen müssen, da dies die Standardeinstellung ist.

Ich bin mir nicht sicher, ob Sie J2EE und EJBs verwenden.

Die Art und Weise, wie Sie es in Ihrem Code verwenden, müssen Sie es jedoch nicht auf false setzen, alles in Transaktionen und Sie steuern sie mit Commit oder Rollback.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top