AGB  ·  Datenschutz  ·  Impressum  







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

Spaß mit UPPERCASE / LOWERCASE ?

Ein Thema von rokli · begonnen am 21. Okt 2020 · letzter Beitrag vom 28. Okt 2020
Antwort Antwort
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#1

AW: Spaß mit UPPERCASE / LOWERCASE ?

  Alt 27. Okt 2020, 11:14
Hallo himitsu,

aber nocc toller wäre es, wenn endlich mal niemand mehr das QuoteStr für SQL-Statements benutzen täte, denn dafür ist es nicht da und auch noch total falsch.
Ich wäre Dir sehr dankbar, wenn Du mir Deine Version - ohne QuotedStr - einmal zeigen würdest!
Vielen Dank für Deine Mühe!
Delphi-Quellcode:
qryKD.Close;
qryKd.SQL.Text := sSQL + ' AND UPPER(Kd.Name1) LIKE UPPER(:KdName) ORDER BY Kd.Name1';
qryKD.Params[0].AsString := TRIM(edtName1.Text) + '%';
// oder über den Parameternamen:
qryKD.ParamByName('KdName').AsString := TRIM(edtName1.Text) + '%';
qryKD.Open;
  Mit Zitat antworten Zitat
rokli

Registriert seit: 21. Mär 2009
Ort: Rödinghausen
302 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Spaß mit UPPERCASE / LOWERCASE ?

  Alt 27. Okt 2020, 11:30
Danke, Delphi.Narium

und was bedeutet:
denn dafür ist es nicht da und auch noch total falsch.
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#3

AW: Spaß mit UPPERCASE / LOWERCASE ?

  Alt 27. Okt 2020, 12:20
QuotedStr setzt die Hochkommata pascalkonform und nicht sqlkonform.
Oft passt das mit den ' aber nicht immer und bei dem "nicht immer" ist es möglich, durch geschicktes setzen der Hochkommata "so mal eben" in ein gültig aussehendes SQL weitere SQL-Statements einzufügen, mit denen man im "Idealfall" den gesamten Datenbestand ruinieren kann.

Oder mal anders formuliert: Unter Zuhilfenahme von QuotedStr (bzw. dem Zusammenbau von SQLs durch das Zusammenfügen von Strings) kann man Schadcode in ein SQL einfügen und diesen dann per Open bzw. ExecSQL ausführen lassen.

Bei der Nutzung von Parametern ist dies nicht möglich. Egal was man da in den Parameter "reinschiebt", es wird immer als Gesamtes (als Inhalt) in einem einzigen Wert interpretiert.

Da QuotedStr nur das ' kennt, wird man mit QuotedStr bei allen Datenbanken, die auch noch was anderes als das ' unterstützen / verlangen, scheitern.

Geändert von Delphi.Narium (27. Okt 2020 um 12:21 Uhr) Grund: Schreibfehler
  Mit Zitat antworten Zitat
rokli

Registriert seit: 21. Mär 2009
Ort: Rödinghausen
302 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Spaß mit UPPERCASE / LOWERCASE ?

  Alt 28. Okt 2020, 07:44
Guten Morgen Delphi.Narium,

vielen Dank für Deine ausführlichen Informationen! Das war sehr hilf- und lehrreich für mich!

Da ich aber schon etliche hundert SQL Statements in dieser Form geschrieben habe, werde ich das in Zukunft so machen!

Beste Grüße
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.342 Beiträge
 
Delphi 12 Athens
 
#5

AW: Spaß mit UPPERCASE / LOWERCASE ?

  Alt 28. Okt 2020, 08:25
QuoteStr:
Eine orgendliche SQL-Library sollte irgendwo eine Quote-/Escape-Funktion besitzen, welche die Sprache des entsprechenden SQL spricht.

Wenn man nicht umher kommt und den SQL-Text zusammensetzen muß,
entweder direkt oder mit Makros, dann sollte man eben auch die richtige Funktion benutzen.


In PgDAC z.B. gibt es eine/zwei Funktion mit zuvielen Parametern, welche 'Strings' und "Bezeicher" behandeln kann. (über Ableitung oder ClassHelper kann man sich dann die Verwendung vereinfachen und sie zum leichtern Auffinden auch direkt an die Klassen der Conneecton oder des Query anhängen)
Ein Therapeut entspricht 1024 Gigapeut.
  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 19:55 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