Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Was ist besser? .EDIT / .POST oder ein UPDATE-Query? (https://www.delphipraxis.net/16816-ist-besser-edit-post-oder-ein-update-query.html)

Sharky 24. Feb 2004 08:52


Was ist besser? .EDIT / .POST oder ein UPDATE-Query?
 
Hai,

mal ne Frage *g*

Was ist denn vorzuziehen um Datensätze zu ändern?

Delphi-Quellcode:
begin
  Query1.Edit;
  Query1.FieldByName ('spalte').AsString := 'la le lu';
  Query1.FieldByName ('noch_ne_spalte').AsInteger := 0815;
  .
  .
  Query1.Post;
end;
Oder ein UpdateQuery:

Delphi-Quellcode:
begin
  Query1.SQL.Text := 'UPDATE tabelle SET spalte = :spalte, noch_ne_spalte = :noch_ne_spalte WHERE id = :id';
  Query1.ParamsByName ('spalte').AsString := 'la le lu';
  Query1.ParamsByName ('noch_ne_spalte').AsInteger := 'la le lu';
  Query1.ParamsByName ('id').AsInteger := 1;
  Query1.ExecSQL;
end;
Hat das eine gegenüber dem anderen vor/nachteile?

mschaefer 24. Feb 2004 09:38

Re: Was ist besser? .EDIT / .POST oder ein UPDATE-Query?
 
Moin Sharky,

Wenn man über Deine musikalischen Integer im 2.Beispiel hinwegsieht :P
erreichst Du mit beiden Varianten im Datenbankergebnis das Gleiche:

Einen aktualiserten Datensatz in der Tabelle.

Mit dem direkten Update-Befehl sogar schneller und meiner Ansicht auch
übersichtlicher als die Post-Variante.Es ist übrigens die einzige Möglichkeit
bei BDE und Paradox Kombination gewesen Tabellen gemischte edierbare
Datenmengenzu erhalten, da das Standart UpdateSQL Object das nicht unterstützte.

Soweit - sogut. Meines Erachtens dürfte allerdings die aktualiserung der
datensensitiven Elemente (DBGrid) im zweiten Beispiel auf der Strecke bleiben,
da ExecSQL keine Datenmenge zurückliefert. Post führt aber eine Wiederabfrage
der Datenmenge durch

Grüße aus dem frosteligen Hannover

// Martin

Tyrael Y. 24. Feb 2004 10:11

Re: Was ist besser? .EDIT / .POST oder ein UPDATE-Query?
 
..ich finde beide Varianten sind wichtig und habe ihren Zweck, da zB. TADOTable Events hat wie BeforePost und AfterPost auf die man im Programmverlauf reagieren kann...

..bei TADOQuery kann man eine WHERE-Klausel ja direkt integrieren, wohingegen man bie TADOTable den Umweg über Locate gehen muss..

..es gibt demnach Vor- und Nachteile für beide Varianten..

..letztendlich kommt es mehr drauf an, was man genau erreichen möchte..

..ich denke auch, daß TADQuery schneller sein müsste..

Robert_G 24. Feb 2004 10:42

Re: Was ist besser? .EDIT / .POST oder ein UPDATE-Query?
 
Ich glaube dieses Edit,Post,... macht nur Sinn wenn es schnell (im Sinne von husch-husch hinprogrammiert) gehen muss und man daraufhin auf DBEdits,... ausweichen muss.
Ich persönlich finde die Benutzerfreundlichkeit des DBGrids unzumutbar und verwende deshalb lieber String-/DrawGrids.
Zur Speicherung wird dann ein/mehrere UPDATE-Statement(s) anhand der Änderungen seit der letzten Speicherung zusammengebaut.
Auf die Art bombardiert man die DB nicht mit Updates jedesmal wenn der User die Zeile wechselt und ein String-/DrawGrid ist einfach benutzerfreundlicher.

Sharky 24. Feb 2004 22:23

Re: Was ist besser? .EDIT / .POST oder ein UPDATE-Query?
 
Zitat:

Zitat von mschaefer
...dürfte allerdings die aktualiserung der
datensensitiven Elemente (DBGrid) ...

Jep, das ist "klar" aber darum muss man sich als Programierer auch so immer kümmern.
Da ich es mir abgewöhnt habe mit DB-Sensitiven Objekten (DBEdit, EDLabel, DBGrid usw.) zu arbeiten muss ich für eine aktualisierung immer selber sorgen.

BTW: "La Le Lu" ist doch ein lustiger Fehler für den Compiler? Oder :stupid:

Spass bei seite:

Was geschiet wenn ich z.B. folgenden Schwachsinn mache.

Delphi-Quellcode:
begin
  Query1.Edit
  ... Delay für 5 Minuten ...;
  Query1.FieldByName ('mein_lied_').AsString := 'La Le Lu';
  .... Dely für noch einmal 5 Minunten...;
  Query1.Post;
end;
Ab wann wird denn der DatenSatz von meiner Datenbank (MS-SQL, MySQL) bearbeitet? Sobald das .EDIT kommt oder erst bei dem .POST?


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:06 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 by Thomas Breitkreuz