AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DeleteSQL

Ein Thema von Luckner · begonnen am 22. Jul 2015 · letzter Beitrag vom 22. Jul 2015
Antwort Antwort
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

AW: DeleteSQL

  Alt 22. Jul 2015, 11:30
@Sir Rufo
DRY?
Warum für 50 Fragestellungen 50 Querys definieren wenn 50 x SQLText reicht?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: DeleteSQL

  Alt 22. Jul 2015, 11:32
@Sir Rufo
DRY?
Warum für 50 Fragestellungen 50 Querys definieren wenn 50 x SQLText reicht?

Gruß
K-H
Wegen Prepared Statements => Performance?

Hier haben wir es allerdings mit einem SuperGAU zu tun. Die Query wird zur Anzeige von Daten verwendet und wird dann mal flugs umgebaut. Da kräuseln sich einem die Nackenhaare.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (22. Jul 2015 um 11:34 Uhr)
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: DeleteSQL

  Alt 22. Jul 2015, 11:46
Danke für die Unterstützung. Habe eine weitere Query eingesetzt (wie Sir Rufo vorgeschlagen hat) und es funktioniert. Denke auch, für solche Aufgaben ist eine weitere Query schon nicht schlecht.

Danke.
  Mit Zitat antworten Zitat
Benutzerbild von frankyboy1974
frankyboy1974

Registriert seit: 7. Apr 2015
Ort: SH
169 Beiträge
 
Delphi XE7 Professional
 
#4

AW: DeleteSQL

  Alt 22. Jul 2015, 12:28
Hallo,

ich möchte hier mal antworten:


Ich benutze in meinem eigenem Persistenz-Framework grundsätzlich tatsächlich nur eine Query-Komponente. Ob ich nun ein 'Select' oder ein 'Delete' oder was auch immer gegen die Datenbank huste, spielt erst mal keine Rolle. Delphi-Entwickler benutzen gerne für jede Abfrage ein neues Query-Objekt, eins sollte grundsätzlich reichen, lässt man Nebenläufigkeit jetzt erst mal aus dem Spiel.


mfg

frank
Java ist auch eine Insel.
Ist Delphi von Oracle?
In meiner Buchstabensuppen fehlt das C++!
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: DeleteSQL

  Alt 22. Jul 2015, 13:48
Ich benutze in meinem eigenem Persistenz-Framework grundsätzlich tatsächlich nur eine Query-Komponente. Ob ich nun ein 'Select' oder ein 'Delete' oder was auch immer gegen die Datenbank huste, spielt erst mal keine Rolle. Delphi-Entwickler benutzen gerne für jede Abfrage ein neues Query-Objekt, eins sollte grundsätzlich reichen, lässt man Nebenläufigkeit jetzt erst mal aus dem Spiel.
Also
1. Benutzt der TE sehr wahrscheinlich nicht Dein Persistenzframework
und
2. haben wir hier die Situation, dass die betreffende Query Teil (property) einer Datasetkomponente ist, die einen speziellen Zweck erfüllen soll.
Summa summarum macht es an der Stelle keinen Sinn, die "Schwesterproperty" für das Dataset zu vergewaltigen und dort das Delete einzutragen und auch nicht unbedingt eine separate Query zu erfinden, die im Delete Fall durchführt, wofür es eine vorgesehene Methode gibt. Standard Code, der per Dataset.Delete arbeitet, dürfte an der Stelle sonst auch nicht funktionieren.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: DeleteSQL

  Alt 22. Jul 2015, 14:05
@frankyboy1974

So gekapselt und von der weiteren Verwendung versteckt kann man das auch ruhig machen.

Hier wurde aber gerade gezeigt, dass ein DataSet, was aktiv für die Anzeige eines Grid zuständig ist auch mal eben flugs für das Absetzen eines Statements missbraucht wird.

Und wenn du dein Framework passend aufgebaut hast
Delphi-Quellcode:
TFramework = class
private
  FGoldenRingQuery : TQuery;
protected
  // Bereitet die Query für den Abfrage-Kontext vor
  function GetQuery( const QueryContext: string ): TQuery;
end;
dann ist es ja auch ein Leichtes, hier ein Dictionary aufzusetzen, was dann für jeden Abfrage-Kontext eine eigene Query-Konponente zur Verfügung stellt und vorhält.

Falls es nämlich mal zu zeitlichen Engpässen kommen sollte (viele Operation mit ständig wechselndem Query-Kontext). Denn bei jedem Zuweisen des SQL-Textes wird dieser immer wieder geparst, um die Parameter herauszufinden.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
542 Beiträge
 
Delphi 12 Athens
 
#7

AW: DeleteSQL

  Alt 22. Jul 2015, 14:21
Noch mal kurz sortiert:

Das Dataset ist wohl ein IBDataset.

Dies enhält mehrere SQLs für open, insert, update, delete, die aber nicht direkt aufgerufen werden, sondern dann, wenn ein Aufruf der Methode des Datasets erfolgt.
Ist das Dataset nicht offen, kann man nichts davon verwenden (außer natürlich open), Dataset.insert, delete usw. funktionieren nicht.

Will man wie angegeben nur einen Datensatz löschen dann nimmt man eine SQL-Komponente, schreibt das SQL-Kommando in deren SQL-Feld, dann execute und fertig.

Das Dataset ist dann praktisch, wenn man die Daten anzeigen will und der Benutzer Änderungen macht, die über die eingebauten SQL-Befehle ausgeführt werden.
Ralf
Gruß vom Niederrhein
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:22 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