Printanweisung mit variabler Länge erzeugen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
BlackJack

@jerch: Naja beim `execute()` ist Effizienz ein netter Bonus zur effektiven Verhinderung von SQL-Injection, und bei `executemany()` wäre es alleine für sich schon ein Grund da für `n` Datensätze nicht `n` verschiedene SQL-Anweisungen an das DBMS zu füttern. Oder habe ich die Frage missverstanden?
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@Papp Nase: es gibt 101 Gründe, warum das Übergeben von Werten in SQL-Statements mit Stringformatierung schlecht und mit Platzhaltern gut ist. Warum ist es gut, einen Sicherheitsgurt im Auto anzulegen oder statt aus dem 5. Stock zu springen, die Treppe zu nehmen?

1. Lesbarer: Befehl und Werte sind getrennt
2. Schneller: Werte werden direkt übergeben und müssen nicht erst geparst werden
3. Einfacher: man muß sich nicht selbst um das Escapen von Sonderzeichen bemühen
4. weniger Fehleranfälliger, weil weniger Komplex
5. Sicherer: es können nicht absichtlich oder unabsichtlich andere SQL-Befehle ausgeführt werden.

Punkt 5 ist nur ein netter Nebeneffekt, der in den meisten Fällen gar keine Rolle spielt. Die Punkt davor sollten Grund genug sein, sich zu merken, wie man Parameter übergibt, zumal es absolut keine Nachteile gibt.
Papp Nase
User
Beiträge: 139
Registriert: Dienstag 11. März 2014, 15:12

Vielen Dank für die vielen Tipps und Beispiele, die ich von Euch bekommen habe - ihr habt mir sehr weitergeholfen.
Antworten