Einzelnen Beitrag anzeigen

Steffen

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

'\'AUTO' in ein Textfeld einer mySQL-DB schreiben

  Alt 24. Mär 2004, 13:34
Hallo!

bei mir liegt folgendes Problem vor:

Ich habe eine Anwendung geschrieben, die Text-Datein ausliest und den Inhalt in eine mySQL-Datenbank schreibt.
In den Text-Datein sind E-Mails abgelegt...
Die Anwendung funktoniert eigentlich ganz gut, bis auf eine Sache:

In einer Textdatei steht in einigen Zeilen: '\'AUTO'
Diesen String kann ich nicht in die DB übernehmen...

Delphi-Quellcode:
function TDataBaseModule.ExecuteQuery(strQuery : String) : Boolean;
//------------------------------------------------------------------------------
// Sendet eine Anfrage an die Datenbank
// ---------------------------------------------------------------------------
// Rückgabewert(out) : konnte die Anfrage ausgeführt werden?
// true = ja / false = nein
// ---------------------------------------------------------------------------
// ruft auf :
// mysql_real_query() : Anfrage an die DB senden
// ---------------------------------------------------------------------------
// Vorbedingung :
// Bevor Anfrage an die DB gesendet werden kann, muss eine Verbindung zum
// Datenbank-Server bestehen und eine Datenbank ausgewählt worden sein
//------------------------------------------------------------------------------
begin
  if not Connected then
    begin
      Result := False;
      ShowMessage(C_ERRORMESSAGEDBNOTCONN)
    end
  else
    if mysql_real_query(DataBaseSocket,
                        PAnsiChar(strQuery),
                        Length(strQuery)) <> 0 then
      begin
        Result := False;
        ShowMessage(mysql_error(DataBaseSocket))
      end
    else
      Result := True
end;

function TDataBaseModule.InsertConvertEMail(const EMail : TConverterEMail) :
  Boolean;
//------------------------------------------------------------------------------
// Fügt eine EMail in die Datenbank ein
// ---------------------------------------------------------------------------
// Parameter :
// EMail (in) : EMail die eingefügt werden soll
// ---------------------------------------------------------------------------
// Rückgabewert(out) : Konnte die EMail in die DB eingefügt werden?
// true = ja / false = nein
// ---------------------------------------------------------------------------
// globale Zugriffe :
// self.DataChanged : globales Flag, zum Speichern, ob sich Daten geändert haben
// ---------------------------------------------------------------------------
// ruft auf :
// self.ExecuteQuery : Anfrage an den Datenbank-Server senden
// FormatDateTime : Formatierung eines TDateTime-Wertes in einen String, der im
// Datenbank-konformen-Format vorliegt
// ---------------------------------------------------------------------------
// Vorbedingung :
// Bevor eine EMail in die DB eingefügt werden kann, muss eine Verbindung
// zum Datenbank-Server bestehen und eine Datenbank ausgewählt worden sein
//------------------------------------------------------------------------------
begin
    Result := ExecuteQuery('INSERT INTO '+ C_TMPMAILTABLENAME + ' ' +
                           '(TrackingId, Recipient, Sender, Date, ' +
                           'Subject, MsgText, Attachment) VALUES (' +
                              QuotedStr(EMail.TrackingId) + ',' +
                              QuotedStr(EMail.Recipient) + ',' +
                              QuotedStr(EMail.Sender) + ',' +
                              '''' +
                              FormatDateTime(C_SQLDATETIMEFORMAT,EMail.Date) +
                              ''''+ ',' +
                              QuotedStr(EMail.Subject) + ',' +
                              QuotedStr(EMail.MsgText) + ',' + // Hier entsteht der Einfügefehler
                              QuotedStr(EMail.Attachment) + // Wenn MsgText := '\'AUTO'
                           ')');

  if Result then // Wenn EMail erfolgreich eingefügt wurde, haben sich Daten in
    DataChanged := True // der DB geändert
end;
(Ich greife über die C-API auf die mySQL-Datenbank zu...)

Wie soll ich das Quoten???

Gruß,
Steffen
Wie soll ich wissen was ich denke, bevor ich höre was ich sage?
  Mit Zitat antworten Zitat