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
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
Java:
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();
}
}
}
Zuletzt bearbeitet: