Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Wie fluchtet man Hochkomma im SQL? (https://www.delphipraxis.net/52964-wie-fluchtet-man-hochkomma-im-sql.html)

QuickAndDirty 7. Sep 2005 14:49

Datenbank: Alle • Zugriff über: BDE

Wie fluchtet man Hochkomma im SQL?
 
Genau wie der Der titel meine Frage .
Wie fluchtet man Hochkomma im SQL?
Delphi-Quellcode:
Folgender Datensatz soll eingefügt werden
q.SQL.TEXT := 'Insert into Bla
              (TExtfeld1,textfeld2)
              (' + QuotedStr(' Nickname: ''Otto'' ') + ','+
                   QuotedStr(' Nickname2: ''Uwe'' ') + ')';
Also wie Speicher ich 'uwe' statt uwe?

Bernhard Geyer 7. Sep 2005 14:53

Re: Wie fluchtet man Hochkomma im SQL?
 
Nimm Parameter. Dann ist das Escaping-Problem gelößt - Du brauchst nichts zu escapen.

Jelly 7. Sep 2005 14:56

Re: Wie fluchtet man Hochkomma im SQL?
 
Was soll denn dabei rauskommen. Wieso speicherst du " Nickname: " mit.

Übrigens die korrekte Syntax für Insert lautet
SQL-Code:
insert into Tabelle (F1,F2...) values (V1, V2...)

QuickAndDirty 7. Sep 2005 15:04

Re: Wie fluchtet man Hochkomma im SQL?
 
Ja
es geht darum das Alle Strings im Programm gesucht werden und in
einer Tabelle gespeichert werden sollen dazu kann ich keine Parameter gebrachen
,weil die ÜbersetzungsUnit schon geschrieben ist.
Nun kommt leider in einigen Strings im Programm ein Hochkomma vor

Jelly 7. Sep 2005 15:08

Re: Wie fluchtet man Hochkomma im SQL?
 
Lies doch deine Strings in eine Variable, und ersetzte die ' durch '' mit

Delphi-Quellcode:
V := StringReplace (V,'''','''''',[rfReplaceAll]) ;

QuickAndDirty 7. Sep 2005 15:16

Re: Wie fluchtet man Hochkomma im SQL?
 
Ja das hatte ich auch gedacht, nur ist unserem 450.000 Zeilen Programm
ab und zu auch mal ein SQL der seine String s und Datums in Doppelhockomma fast.
weshalb bereits folgende Schleife aus " "" macht. (kann auch andere Gründe haben)

Delphi-Quellcode:
  while Pos('"', ts2) > 0 do
  begin
    PosZP := Pos('"', ts2);
    insert('"', ts2, PosZP);
    ts := ts + copy(ts2, 1, PosZP + 1);
    delete(ts2, 1, PosZP + 1);
  end;
Hab in PHP Foren von \' gelesen aber das ist wohl
weils ein c Dialekt ist oder?

shmia 7. Sep 2005 15:35

Re: Wie fluchtet man Hochkomma im SQL?
 
QuotedStr setzt eine String in hochkomma und verdoppelt ausserdem jedes Hochkomma innerhalb des Strings.
Also alles paletti.
Du musst nur korrekten Sourcecode hinschreiben:
Delphi-Quellcode:
text1 := ' Nickname: ''Otto'' ';
text2 := ' Nickname2: ''Uwe'' ';
q.SQL.TEXT := 'Insert into Bla (TExtfeld1,textfeld2) Values ('+
              QuotedStr(text1) + ','+ QuotedStr(text2) + ')';
q.ExecSQL;

QuickAndDirty 7. Sep 2005 16:49

Re: Wie fluchtet man Hochkomma im SQL?
 
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????

Lemmy 8. Sep 2005 07:31

Re: Wie fluchtet man Hochkomma im SQL?
 
Wie wäre es mit dem ASCII Zeichen:

Delphi-Quellcode:
'insert into blabla values ('#39'TEst'#39')';
oder eben wie schon angedeutet QuotedStr:

Delphi-Quellcode:
'insert into blabla values ('+QuotedStr('TEst')+')';
oder auch ein Formatstring:
Delphi-Quellcode:
Format('Insert into blabla values(%s)','Test');

von der 3-fach Angabe von ' halte ich nichts, weil das irgend wann echt nicht mehr lesbar ist. Zudem meiner Meinung ziemlich fehleranfällig...

Grüße
Lemmy

P.S.: Was meinst Du eigentlich mit dem Wort "gefluchtet"?

Thanatos81 8. Sep 2005 07:53

Re: Wie fluchtet man Hochkomma im SQL?
 
Ich denke mit gefluchtet bezieht er sich auf die so geannten Escape-Sequenzen, wie man sie zB bei XML kennt. Ich nutze eigentlich auch immer #39, da ich damals ein Programm übernommen habe wo alles mit ''' etc gelöst war. Ich hab sowas von geflucht!


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:38 Uhr.
Seite 1 von 2  1 2      

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