# JDBC Transaktionsporblem - autocomit



## Tallan (30. Sep 2009)

Hallo zusammen,



ich habe ein Problem beim erstellen einer Transaktion, angelehnt an folgendes Tutorial 
Using Transactions (The Java™ Tutorials > JDBC(TM) Database Access > JDBC Basics)
Habe ich ein kleines Testprogramm geschrieben das 2 Querrys ausführen soll, wobei in der 2ten absichtlich ein fehler ist um zu testen ob ein Rollback stattfindet.

Leider wird hierbei trotzdem die erste Querry in die DB geschrieben
eine Fehlermeldung bezüglich der 2ten wird ausgegeben, zum 		    	con.commit(); kommt es dabei nie.

Weiß jemand warum die 1ste Querry trotzdem ausgeführt wird?

Es sieht so aus als würde der Autocommit trotzdem ausgeführt werden



```
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;


public class tester {

	
    public static void main(String[] args)
    {

    	Connection con = null;
		try 
		{
			con = DriverManager.getConnection(url,user,pw);
		} 
		catch (SQLException e1) 
		{
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
    	try
    	{
	    	con.setAutoCommit(false);
	    	//wenn autocommit deaktiviert ist
	    	if(!con.getAutoCommit())
	    	{
	    		
		    	//Savepoint save =  con.setSavepoint();
	    		
		    	PreparedStatement updateSales = con.prepareStatement(
		    			"UPDATE test SET number = ?");
		    	updateSales.setInt(1, 53);
		    	updateSales.executeUpdate();
		    	
		    	PreparedStatement updateTotal = con.prepareStatement(
		    	    "Falsche Querry"); // HIER KRACHT ES ABSICHTLICH
		    	updateTotal.setInt(1, 51);

		    	updateTotal.executeUpdate();
		    	
		    	//con.rollback(save);
		    	con.commit();
		    	System.out.println("Commit ausgeführt");
		    	//con.setAutoCommit(true);
	    	}
    	}
    	catch(Exception e)
    	{
    		e.printStackTrace();
    	}

    }
	
}
```


----------



## maki (30. Sep 2009)

Welche DB?


----------



## Tallan (30. Sep 2009)

maki hat gesagt.:


> Welche DB?



MySQL 5.0.75


----------



## Tallan (30. Sep 2009)

Ich hab den Fehler gefunden, die Engine der Tabelle war falsch, MySQL hat standartmässig
MyISAM genutzt allerdings benötigt man in diesem fall InnoDB


----------

