Funkfeuer
- Forum-Beiträge: 38
25.02.2012, 20:26:09 via Website
25.02.2012 20:26:09 via Website
Hallo,
ich hätte eine generelle Frage zu Transaktionen mit SQLite.
Ich habe verschiedene SQL-Anweisungen in den Methoden methode1(), methode2() und methode3() gekapselt.
In diesen Methoden werden INSERT-Befehle in verschiedenen Tabellen durchgeführt.
Sollte es in einer dieser Methoden zu einem Fehler/Abbruch kommen, sollen auch in allen anderen Methoden die INSERT-Befehle rückgängig gemacht werden (Rollback).
In den Methoden werden neben Datenbank-Operationen auch z. B. Benutzereingaben validiert. Es wird also auch Logik durchgeführt, die nix mit der Datenbank zu tun haben.
So soll z. B. wenn ein Webservice-Aufruf erfolgreich war, ein INSERT ausgeführt werden - oder halt nicht. Das hätte dann aber auch Auswirkungen auf die anderen Methoden, dass dann die vorigen INSERT's erhalten (Commit) bleiben oder eben wieder rückgängig gemacht werden (Rollback).
Ist das so wie im folgenden Beispiel durchführbar:
cu
Chris
ich hätte eine generelle Frage zu Transaktionen mit SQLite.
Ich habe verschiedene SQL-Anweisungen in den Methoden methode1(), methode2() und methode3() gekapselt.
In diesen Methoden werden INSERT-Befehle in verschiedenen Tabellen durchgeführt.
Sollte es in einer dieser Methoden zu einem Fehler/Abbruch kommen, sollen auch in allen anderen Methoden die INSERT-Befehle rückgängig gemacht werden (Rollback).
In den Methoden werden neben Datenbank-Operationen auch z. B. Benutzereingaben validiert. Es wird also auch Logik durchgeführt, die nix mit der Datenbank zu tun haben.
So soll z. B. wenn ein Webservice-Aufruf erfolgreich war, ein INSERT ausgeführt werden - oder halt nicht. Das hätte dann aber auch Auswirkungen auf die anderen Methoden, dass dann die vorigen INSERT's erhalten (Commit) bleiben oder eben wieder rückgängig gemacht werden (Rollback).
Ist das so wie im folgenden Beispiel durchführbar:
1sqlDatenbank.beginTransaction();
2try {
3 methode1(); //hier werden Benutzereingaben validiert
4 methode2(); //hier wird ein Webservice aufgerufen
5 methode3(); //hier erfolgen Logging-Einträge
6
7 sqlDatenbank.setTransactionSuccessful();
8
9} catch (Exception e) {
10 e.toString();
11}finally{
12 sqlDatenbank.endTransaction();
13}
2try {
3 methode1(); //hier werden Benutzereingaben validiert
4 methode2(); //hier wird ein Webservice aufgerufen
5 methode3(); //hier erfolgen Logging-Einträge
6
7 sqlDatenbank.setTransactionSuccessful();
8
9} catch (Exception e) {
10 e.toString();
11}finally{
12 sqlDatenbank.endTransaction();
13}
cu
Chris
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.