Autor Beitrag
rs1305
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Do 18.02.16 17:44 
Ich bearbeite ein Projekt mit einer Anbindung an eine Firebird Datenbank. Nun stoße ich vermehrt auf SQL Strings die so oder so ähnlich aussehen:

"where ll.Z100>=:Z100" - dies ist ein Ausschnitt aus einer Abfrage. Irgendwie ist mir nicht klar, was auf der rechten Seite gemeint ist (:z100). Ich komme eigentlich aus der Microsoft Welt und kenne solche Abfragen nicht ... brauch aber dringend eine Antwort.

wäre schön wenn jemand hier einen Plan hätte.


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am So 21.02.2016 um 21:36
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Do 18.02.16 18:26 
Moin,

das sind sog. Prepared Statements mit benamten Parametern (named parameters). Diese gibt es in jedem SQL-Dialekt und dienen u.a. dazu, SQL-Injection zu verhindern. Nachlesen kann man das in der Dokumentation der jeweiligen Datenbankabstraktion. Eine Zusammenfassung gibt es z.B. auf Wikipedia.

Gruß
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 18.02.16 18:28 
Das sind Parameter. Dabei musst du dich nicht um den Datentyp kümmern für die SQL Abfrage (Anführungszeichen, Zahlenumwandlung, ...), das erledigt die DB-Schnittstelle für dich.

Du schreibst also die SQL Formel und setzt dann die Parameter bevor du die Anfrage ausführst.

// Edit:
Oh, am Handy hatte ich die Antwort gar nicht gesehen. Damit ist ja schon alles gesagt.
Bernhard Geyer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 721
Erhaltene Danke: 3



BeitragVerfasst: So 21.02.16 16:29 
Auch in der Microsoft-Welt ist das üblich.
Siehe hier msdn.microsoft.com/d...epare(v=vs.110).aspx für ein Beispiel für .NET/C#