AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Wie fluchtet man Hochkomma im SQL?

Wie fluchtet man Hochkomma im SQL?

Ein Thema von QuickAndDirty · begonnen am 7. Sep 2005 · letzter Beitrag vom 29. Sep 2005
Antwort Antwort
Seite 2 von 2     12
DevilsCamp
(Gast)

n/a Beiträge
 
#11

Re: Wie fluchtet man Hochkomma im SQL?

  Alt 8. Sep 2005, 08:01
Bei PHP mit MySQL würde man jetzt escapen.
Delphi-Quellcode:
s = "SELECT irgendwas FROM irgendwo WHERE irgendwer=\"na der hier\"";
s = "SELECT irgendwas FROM irgendwo WHERE irgendwer='na der hier'";
s = 'SELECT irgendwas FROM irgendwo WHERE irgendwer=\'na der hier\'';
s = 'SELECT irgendwas FROM irgendwo WHERE irgendwer="na der hier"';

Vielleicht hilft dir das weiter


Oder du benutzt statt ' die " (falls es deine DB unterstützt)
Dann hast du diese Probs nicht
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#12

Re: Wie fluchtet man Hochkomma im SQL?

  Alt 8. Sep 2005, 08:01
Zitat von Lemmy:
P.S.: Was meinst Du eigentlich mit dem Wort "gefluchtet"?
To Escape = Fliehen, flüchten
Dann heisst es bald "Drücken Sie die Flucht-Taste, um das Programm aufzugeben" (Press the ESC-key to quit the program)...
Herrlich! Allerdings ist es ein löblicher Versuch, der Veranglifizierung (bruuuhaaa!) der deutschen Sprache entgegenzuwirken!

Deine Vorschläge sind ok, nur die Formatanweisung lautet eben
Result := Format('Das hier mit Hochkommata : >%s<',[QuotedStr(szFooBar)]); Aber das war ja nur ein Flüchtigkeitsfehler.

N.B.: Ich verwende fast ausschliesslich die Format-Anweisung, um SQL-Befehle zusammenzubepseln. Dabei packe ich das SQL-Template in eine lokale (oder globale, je nachdem) Konstante, ungefähr so:
Delphi-Quellcode:
Function MyInsertStmt (Const aParam1, aParam2 : String) : String;
Const
  szInsertTemplate = 'Insert into MyTable (Col1, Col2) Values (%s,%s)';

Begin
  Result := Format (szInsertTemplate, [QuotedStr (aParam1), QuotedStr (aParam2)]);
End;
Übersichtlicher geht es kaum (Geschmackssache).
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#13

Re: Wie fluchtet man Hochkomma im SQL?

  Alt 8. Sep 2005, 08:34
Soso... also gefluchtet kommt dann von flüchten oder eher von fluchen?
Vielleicht ist es aber einfach auch ein Fachbegriff aus der Vermessung der in dem Zusammenhang eigentlich nichts zu suchen hat (Flucht=Linie mehrerer Fluchtstäbe, gefluchtet= mehrere Fluchtstäbe in einer Linie; Fluchtstäbe sind die 2m hohen weiß-rot gefärbten Teile die die Jungs in Tarnkleidung in der Gegend stecken lassen und ziemlich wütend reagieren, wenn man die rauszieht oder umsteckt....).

Zitat:
Aber das war ja nur ein Flüchtigkeitsfehler.
hast recht... so ist das halt wenn man nicht mit Copy-and-Paste arbeitet )

Lemmy
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#14

Re: Wie fluchtet man Hochkomma im SQL?

  Alt 8. Sep 2005, 09:57
Zitat von QuickAndDirty:
meinst du das Quotedstring('''');
dem SQL Server '''' übergibt

also ein ' innerhalb eines SQL genauso
wie in delhi gefluchtet wird in dem er verdoppelt '' wird???

Also 'insert into bla (bla2) Values('' '' '')'

das würde ein leerzeichen ein Hochkomma und einleerzeichen
in eintextfeld einfügen????
Vielleicht liest du mal die Online-Hilfe zu QuotedStr()!!!
Die Funktion heisst QuotedStr und nicht QuotedString.
@Devilscamp: Die SQL-Syntax verlangt einfache Hochkomma's bei String-Literalen. Dabei sollte man auch bleiben.
Auch wenn das DBMS Anführungszeichen erlaubt.
Bitte nicht #39 verwenden, um einen String in Hochkommas zu setzen; dafür gibt es QuotedStr.
Andreas
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#15

Re: Wie fluchtet man Hochkomma im SQL?

  Alt 8. Sep 2005, 10:39
Zitat von Lemmy:
Soso... also gefluchtet kommt dann von flüchten oder eher von fluchen?
Vielleicht ist es aber einfach auch ein Fachbegriff aus der Vermessung ...
Lemmy
Na, ja... kann auch sein, aber im Englischen würde man eben fragen: "how can I escape the quotes?". Das '\' ist ja z.B. in vielen Programmiersprachen so ein Escape-Zeichen. Bei den Formatstrings in Delphi wäre das das '%' ... Aber natürlich kann das auch eine vermessungstechnische Angelegenheit sein, da frage ich mich aber nach dem Zusammenhang. Oder er meint wirklich
"Wie verflucht man Quotes?" Eine Frage, an der schon die Kirche gescheitert ist ...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.882 Beiträge
 
Delphi 12 Athens
 
#16

Re: Wie fluchtet man Hochkomma im SQL?

  Alt 28. Sep 2005, 16:34
Ähm Fluchten ist der in der Literatur allgemein verwendete Begriff
da es solche krücken wie escapen oder eskeipen oder esceipen im deutschen
nicht gibt. Es heist halt fluchten.

Hab das jetzt mit doppelten hochkommas gelöst da es innerhalb von
einem SQL keine andere möglich keit gibt das zu fluchten .
nochmal zur erklärung.
folgender Quelltext liegt vor.
Delphi-Quellcode:
  try
    if s <> 'then cbox.Tag:=StrToInt(cbox.Text);
  except
    Result:=False;
    ShowMessage({$IFDEF TRANSLATION}TranslateString{$ENDIF}('Ungültiger Wert im Feld ''')+Lbl+'''');
    cbox.SetFocus;
  end;
Ich habe die Translatestring Funktion hier eingefügt wie an Tausenden anderen stellen.
wenn der Text der übergeben ist nicht bekannt ist fügt Translatestring ihn in eine Übersetzungs
Tabelle ein.
Leider hat nun dieser String Hochkommata im text. es wäre dabei eigal wie diese innerhalb delphi
dargestellt sind ob al QuotedStr() oder als #39 etc, denn im Sql tauchen sie ja wieder
auf so das das insert nicht klappt weil sie innerhalb des SQLs nicht gefluchtet sind.
aber wenn man sie noch einmal verdoppelt sind die innerren Hochkomma aich in SQL gefluchtet
und des INSERT Statement funktioniert. und genau das geschieht innerhalb von Translatestring.

'#39' bringst in einem SQL nicht da gibt es das einfach nicht nur '''' funktioniert im SQL.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#17

Re: Wie fluchtet man Hochkomma im SQL?

  Alt 28. Sep 2005, 17:59
Kleine Anmerkung noch: Wenn man SQL-Befehle nicht selbst zusammenbastelt, sond z.B. ein ADOCommand nimmt, und die Werte mit Parametern definiert, übernimmt Delphi die ganze Arbeit mit dem fluchten....
UPDATE Table Set Name = :MyParam Where Foo = :Bar
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
DevilsCamp
(Gast)

n/a Beiträge
 
#18

Re: Wie fluchtet man Hochkomma im SQL?

  Alt 29. Sep 2005, 06:50
Zitat von alzaimar:
Kleine Anmerkung noch: Wenn man SQL-Befehle nicht selbst zusammenbastelt, sond z.B. ein ADOCommand nimmt, und die Werte mit Parametern definiert, übernimmt Delphi die ganze Arbeit mit dem fluchten....
UPDATE Table Set Name = :MyParam Where Foo = :Bar
Erkläre das mal bitte genauer
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#19

Re: Wie fluchtet man Hochkomma im SQL?

  Alt 29. Sep 2005, 07:20
Wenn Du in ein TADOQuery.SQL, TADOCommand.Text oder TADODataset.Text eine 'parametriesierte Query' in dieser Syntax reinschreibst, kannst Du sehr bequem über die Params Eigenschaft (oder Parameters? ist immer Anders , die einzelnen Werte setzen. Das ist insofern bequem, als das man sich nicht über Float-Formate (Decimalpoint!), Datumskonventionen (DD-MM-YY, oder YY/MM/DD ?) und Strings Gedanken machen muss.

Probiers mal aus...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 20:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz