AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL - Insertsyntaxfehler wegen Sonderzeichen im Text
Thema durchsuchen
Ansicht
Themen-Optionen

SQL - Insertsyntaxfehler wegen Sonderzeichen im Text

Ein Thema von Steffen · begonnen am 3. Feb 2004 · letzter Beitrag vom 6. Feb 2004
Antwort Antwort
Seite 1 von 2  1 2      
Steffen

Registriert seit: 19. Mär 2003
Ort: Hamburg
111 Beiträge
 
Delphi 7 Enterprise
 
#1

SQL - Insertsyntaxfehler wegen Sonderzeichen im Text

  Alt 3. Feb 2004, 22:13
Hallo!

Ich muss in meine Datenbank (mySQL) beliebige Texte speichern können.
Wenn ich nun einen Text, wie diesen
Code:
Hallo,
Dies ist ein 'Text'
"SQL"->|",',;.
per SQL in die Datenbank schreiben will bekomme ich einen Fehler.
Anscheinend gibt's da ein Problem mit den Sonderzeichen (wie ()[]{}',;&" ).

Wie kann ich folgende SQL-Anweisung sicherer machen? [ExecuteQuery(strQuery : String)]
Delphi-Quellcode:
   Result := ExecuteQuery('INSERT INTO '+ C_MAILTABLENAME +' (Subject, MsgText, Attachement) VALUES (' +
                                                                          ''''+ EMail.Subject +''''+ ',' +
                                                                          ''''+ EMail.MsgText +''''+ ',' +
                                                                          ''''+ EMail.Attachement +''''+
                                                                     ')')
(Wenn nun in z.B. EMail.MsgText = ',:,-"!234§2&/(()' steht gibt 'nen Syntax-Fehler...)

Vielen Dank im Voraus!
Steffen
Wie soll ich wissen was ich denke, bevor ich höre was ich sage?
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#2

Re: SQL - Insertsyntaxfehler wegen Sonderzeichen im Text

  Alt 3. Feb 2004, 22:37
Wie wär's mit:
Delphi-Quellcode:
  Result := ExecuteQuery('INSERT INTO '+ C_MAILTABLENAME +' (Subject, MsgText, Attachement) VALUES (' +
                                                                          QuotedStr(EMail.Subject) + ',' +
                                                                          QuotedStr(EMail.MsgText) + ',' +
                                                                          QuotedStr(EMail.Attachement) +
                                                                     ')');
QuotedStr gibt dir vorne und hinten ein #39 und ersetzt alle #39 durch #39#39 (#39 ist ein ' )
  Mit Zitat antworten Zitat
Steffen

Registriert seit: 19. Mär 2003
Ort: Hamburg
111 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: SQL - Insertsyntaxfehler wegen Sonderzeichen im Text

  Alt 3. Feb 2004, 22:53
Liegt's denn nur an den ' ?
Oder zählen da noch andere Zeichen zu den Störfaktoren?
Wie soll ich wissen was ich denke, bevor ich höre was ich sage?
  Mit Zitat antworten Zitat
Steffen

Registriert seit: 19. Mär 2003
Ort: Hamburg
111 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: SQL - Insertsyntaxfehler wegen Sonderzeichen im Text

  Alt 3. Feb 2004, 23:00
Wenn ich das so mache:
Delphi-Quellcode:
Result := ExecuteQuery('INSERT INTO '+ C_MAILTABLENAME +' (Subject, MsgText, Attachement) VALUES (' +
                                                                          QuotedStr(EMail.Subject) + ',' +
                                                                          QuotedStr(EMail.MsgText) + ',' +
                                                                          QuotedStr(EMail.Attachement) +
                                                                     ')');
Bekomme ich die Fehlermeldung:
"Operator ist auf diesen Operandentyp nicht anwendbar!"

zur Vollständigkeit:
Delphi-Quellcode:
TEMail = record
              Id : Cardinal;
              TrackingId : Cardinal;
              Status : TMailStatus;
              Recipient : String[255];
              Sender : String[255];
              Date : TDateTime;
              Subject : String[255];
              MsgText : String;
              Attachement: String[255];
         end;
var
  EMail : TEMail;
Wie soll ich wissen was ich denke, bevor ich höre was ich sage?
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#5

Re: SQL - Insertsyntaxfehler wegen Sonderzeichen im Text

  Alt 3. Feb 2004, 23:01
Dein Code ignoriert mögliche #39 in einem der drei Werte. Das könnte dann so aussehen:

INSERT INTO MailTable (Subject, MsgText, Attachement) VALUES ('Moin','Ich wollt's kurz testen...', 'Test.txt') Deine DB meckert jetzt das sie den Identifier "kurz" oder "s" nicht kennt.
Nachtrag:
Ich schau kurz mal...
  Mit Zitat antworten Zitat
Steffen

Registriert seit: 19. Mär 2003
Ort: Hamburg
111 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: SQL - Insertsyntaxfehler wegen Sonderzeichen im Text

  Alt 3. Feb 2004, 23:06
Zitat:
INSERT INTO MailTable (Subject, MsgText, Attachement) VALUES ('Moin','Ich wollt's kurz testen...', 'Test.txt') Deine DB meckert jetzt das sie den Identifier "kurz" oder "s" nicht kennt.
Das ist logisch, danke!
Wie soll ich wissen was ich denke, bevor ich höre was ich sage?
  Mit Zitat antworten Zitat
Steffen

Registriert seit: 19. Mär 2003
Ort: Hamburg
111 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: SQL - Insertsyntaxfehler wegen Sonderzeichen im Text

  Alt 3. Feb 2004, 23:08
Aber warum funktioniert:
Delphi-Quellcode:
Result := ExecuteQuery('INSERT INTO '+ C_MAILTABLENAME +' (Subject, MsgText, Attachement) VALUES (' +
                                                                          QuotedStr(EMail.Subject) + ',' +
                                                                          QuotedStr(EMail.MsgText) + ',' +
                                                                          QuotedStr(EMail.Attachement) +
                                                                     ')');
nicht richtig...?
Wie soll ich wissen was ich denke, bevor ich höre was ich sage?
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#8

Re: SQL - Insertsyntaxfehler wegen Sonderzeichen im Text

  Alt 3. Feb 2004, 23:17
Ich habe gerade mal deinen Record eingefügt und den folgenden Code benutzt...

Delphi-Quellcode:
  EMail.Subject:= 'Moin';
  EMail.MsgText:= 'Ich wollt'+#39+'s kurz testen...';
  EMail.Attachement:= 'Test.txt';

  ShowMessage(
    'INSERT INTO ' + C_MAILTABLENAME + #10 +
    ' (Subject, MsgText, Attachement) ' + #10 +
    ' VALUES (' + QuotedStr(EMail.Subject) + ',' + #10 +
    ' ' + QuotedStr(EMail.MsgText) + ',' + #10 +
    ' ' + QuotedStr(EMail.Attachement) + ')');

Als Ergebnis bekomme ich:
SQL-Code:
---------------------------
Project1
---------------------------
INSERT INTO
         (Subject, MsgText, Attachement)
  VALUES ('Moin',
          'Ich wollt''s kurz testen...',
          'Test.txt')
---------------------------
OK
---------------------------

Ich weiß nicht warum das Statement nicht funktionieren sollte.

p.s.: kommt die Meldung vom Delphi-compiler oder von der DB?
  Mit Zitat antworten Zitat
Steffen

Registriert seit: 19. Mär 2003
Ort: Hamburg
111 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: SQL - Insertsyntaxfehler wegen Sonderzeichen im Text

  Alt 3. Feb 2004, 23:18
Der Fehler wird vom Delphi-Compiler bemängelt.
Wie soll ich wissen was ich denke, bevor ich höre was ich sage?
  Mit Zitat antworten Zitat
Steffen

Registriert seit: 19. Mär 2003
Ort: Hamburg
111 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: SQL - Insertsyntaxfehler wegen Sonderzeichen im Text

  Alt 3. Feb 2004, 23:20
Hab' den Fehler bei mir im Code gefunden, der gepostete Code ist korrekt!

Vielen Dank!
Wie soll ich wissen was ich denke, bevor ich höre was ich sage?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:57 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