![]() |
Wie feststellen ob SQL-Befehl erfolgreich ausgeführt wurde?
hallo,
wie kann ich herausbekommen, ob ein sql-befehl erfolgreich ausgeführt wurde? also die befehle sehen etwa so aus: Query1.SQL.Add('INSERT INTO artikel ...); Query1.ExecSQL; Ich könnte natürlich nun mit SELECT abfragen ob der jeweilige artikel hinzugefügt worden ist (anhand des primärschlüssels), aber das wäre nun ziemlich umständlich. danke gruß thorsten |
Re: Wie feststellen ob SQL-Befehl erfolgreich ausgeführt wur
Wenn ein SQL nicht ausgeführt wurde, kommt doch eine Exception, oder? Reicht das nicht oder was meinst Du mit "nicht ausgeführt".
|
Re: Wie feststellen ob SQL-Befehl erfolgreich ausgeführt wur
Mhh .. ne Exception kam bei mir noch nie. Einige Probleme hatte ich aber schon. Kommt die wirklich?
Dann muss es wohl an meinem Quelltest liegen. :-) |
Re: Wie feststellen ob SQL-Befehl erfolgreich ausgeführt wur
Die Exception kommen, wenn Dein SQL Syntax-Fehler hat, oder Du zum Beispiel Primärschlüssel verletzt.
|
Re: Wie feststellen ob SQL-Befehl erfolgreich ausgeführt wur
hallo,
also die synthax bei mir ist richtig. ich möchte nur gerne wissen, ob beim ausführen ein fehler auftrat, z.b. wenn die netzwerkverbindung während des ausführens des befehls abbricht o.Ä.. gruß thorsten |
Re: Wie feststellen ob SQL-Befehl erfolgreich ausgeführt wur
Hallo @daywalker-dj-k
würde dies nicht auch einen Fehler erzeugen, den man abprüfen kann ... |
Re: Wie feststellen ob SQL-Befehl erfolgreich ausgeführt wur
Normalerweise schon, die Frage ist hier nur wieder, wie man jetzt reagieren soll? Da die Verbindung weg ist, kann man auch nix mehr rückgängig machen.
|
Re: Wie feststellen ob SQL-Befehl erfolgreich ausgeführt wur
Zitat:
Für Netzwerksverbindungsfehler oder andere Exceptions empfehle Transaktionen:
Delphi-Quellcode:
Das sollte helfen, denk ich.
LQuery.Connection.BeginTrans;
try LQuery.SQL.Text := 'IRGENDEIN STATEMENT'; LQuery.ExecSQL; LQuery.CommitTrans; except LQuery.Connection.RollbackTrans; end; mfg |
Re: Wie feststellen ob SQL-Befehl erfolgreich ausgeführt wur
Zitat:
Gruß, Tom |
Re: Wie feststellen ob SQL-Befehl erfolgreich ausgeführt wur
Und hat es geholfen?
|
Re: Wie feststellen ob SQL-Befehl erfolgreich ausgeführt wur
Zitat:
|
Re: Wie feststellen ob SQL-Befehl erfolgreich ausgeführt wur
Das RollbackTrans wäre je auch für andere Exceptions.
Wenn die Verbindung abbricht bevor ein CommitTrans erfolgt ist, wird auch keine Änderung an der Datenbank durchgeführt. Die Datenbank erzeugt temporäre Tabellen beim Befehl BeginTrans und führt die folgenden Anweisungen nur in diesen temporären Tabellen aus. Erst ein CommitTrans führt dazu das der Inhalt der temporären Tabellen in die eigentlichen Tabellen übertragen wird. Kommt kein CommitTrans wird die Datenbank nicht verändert. |
Re: Wie feststellen ob SQL-Befehl erfolgreich ausgeführt wur
Hallo zusammen,
innerhalb von Delphi gibt es seit jeher den SQL-Monitor. Damit geht so etwas :-) Gruß Jochen |
Re: Wie feststellen ob SQL-Befehl erfolgreich ausgeführt wur
Hi,
zurück zur Hauptfrage, wenn Du ein SQL-Statement ausführst, dann kannst Du über die Eigenschaft RowsAffected herausfinden ob Dein Statement erfolgreich war. |
Re: Wie feststellen ob SQL-Befehl erfolgreich ausgeführt wur
Zitat:
Angenommen die Verbindung bricht vor dem Commit ab. Die DB wird zwar net verändert, aber die Temp-Tabelle bleibt solange bis die DB Sie mal löscht. Was passiert dann eigentlich bei nem Select. Die DBs haben doch so komische Isolation-Levels. Werden IMMER nur die Datensätze geliefert, die auch erfolgreich in die Tabelle geschrieben wurden? Bin mir da nicht sicher - auch nicht was für Standard-Einstellungen die DBs besitzen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz