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: 1325
Erhaltene Danke: 117

Mac OSX
TypeScript (Webstorm), Kotlin, Clojure (IDEA)
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: 18694
Erhaltene Danke: 1620

W10 x64 (Chrome, IE11)
Delphi 10.2 Ent, Oxygene, C# (VS 2015), 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#