Entwickler-Ecke

Datenbanken - SQL-Probleme


rs1305 - Do 18.02.16 17:44
Titel: SQL-Probleme
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 - 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 [https://en.wikipedia.org/wiki/Prepared_statement].

Gruß


jaenicke - 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 - So 21.02.16 16:29

Auch in der Microsoft-Welt ist das üblich.
Siehe hier https://msdn.microsoft.com/de-de/library/system.data.sqlclient.sqlcommand.prepare(v=vs.110).aspx für ein Beispiel für .NET/C#