Preferable Methode zum Schreiben von Delphi-Datenbank-Apps mit transaktions- und datensensitiven Komponenten

Was ist die bevorzugte Methode zum Schreiben von Delphi-Datenbankanwendungen mithilfe von Transaktionen und auch datensensitiven Komponenten?

Ich muss eine Client-App schreiben, die auf InnoDB-Tabellen zugreift, und einige Dinge innerhalb von Transaktionen ausführen. Nach einigen Recherchen zu Transaktionen (aus allgemeiner Sicht) bin ich demütig zu dem Schluss gekommen, dass nicht datensensitive Komponenten und handcodiertes SQL die "perfekte Übereinstimmung" von Transaktionen sind. Aber die datensensitiven Komponenten wären es nicht. Sie scheinen nicht füreinander gemacht zu sein.

Ich muss wirklich Transaktionen verwenden, aber andererseits konnte ich die datensensitiven Komponenten nicht einfach wegwerfen, weil sie die Dinge erheblich vereinfachen.

Könnte mich bitte jemand aufklären? Ich habe es gegoogelt, aber ich habe keine nützliche Antwort gefunden. Vielleicht, weil mein Englisch nicht gut genug ist, dass meine Keywords begrenzt sind.

BTW, ich verwende Delphi 7 und evaluiere derzeit UniDAC als Datenzugriffsbibliothek.

Vielen Dank

BEARBEITE

Beispiel, um einen Aspekt meiner Frage zu beschreiben:

Stellen Sie sich ein Formular mit 2 DBGrids vor. Das erste Raster ist MasterGrid und darüber befinden sich die folgenden Schaltflächen: Hinzufügen, Bearbeiten und Löschen. Das zweite Raster ist DetailGrid. Wenn der Benutzer auf Hinzufügen klickt, sieht das folgendermaßen aus:

Connection.StartTransaction Master.Append, dann Master.Post, dann Master.Edit (das Master-Dataset hat also den Autoincrement-Primärschlüssel und kann jetzt bearbeitet werden) Zeigen Sie das Bearbeitungsformular modal an, in dem der Benutzer die Stammsätze ausfüllt, und fügen Sie einige Detailsätze mithilfe eines anderen Formulars hinzu.Wenn der Benutzer auf OK klickt, führt die App Master.Post und Connection.Commit aus. Wenn der Benutzer auf Abbrechen klickt, führt die App Connection.Rollback aus.

Ich weiß, dass Transaktionen so kurz wie möglich sein sollten, aber Sie können oben sehen, dass die Transaktion nur so kurz ist wie die Geschwindigkeit, mit der der Benutzer das Formular ausfüllt.

Wenn ich nicht datensensitive Komponenten verwende, füge ich benutzerdefinierte SQL-Anweisungen basierend auf Benutzereingaben ein und führe dann die SQL-Anweisungen zwischen StartTransaction und Commit aus. So kann ich sehr kurze Transaktion erreichen.

EDIT 2

Ich danke Ihnen allen für Ihre freundliche Teilnahme. Ich wähle die Antwort von vcldeveloper aus, da dies die Lösung ist, die meinem aktuellen Bedarf am nächsten kommt.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage