Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi '\'AUTO' in ein Textfeld einer mySQL-DB schreiben (https://www.delphipraxis.net/18767-%5Cauto-ein-textfeld-einer-mysql-db-schreiben.html)

Steffen 24. Mär 2004 13:34


'\'AUTO' in ein Textfeld einer mySQL-DB schreiben
 
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

Matt 25. Mär 2004 10:59

Re: '\'AUTO' in ein Textfeld einer mySQL-DB schreiben
 
Mach aus dem \Auto einfach ein \\Auto, dann klappt es!
Habe immer die gleichen Probs, wenn ich Verzeichnisse speichern will.
Liegt an dem \, ist glaube ich ein Steuerzeichen oder sowas!

Gruß Matt

BorlanDelphiUser 22. Feb 2005 13:31

Re: '\'AUTO' in ein Textfeld einer mySQL-DB schreiben
 
Zitat:

Zitat von Matt
Mach aus dem \Auto einfach ein \\Auto, dann klappt es!
Habe immer die gleichen Probs, wenn ich Verzeichnisse speichern will.
Liegt an dem \, ist glaube ich ein Steuerzeichen oder sowas!

Gruß Matt

Ich hab auch gerade dieses Problem wie macht man aus \Auto -> \\Auto?
Ich glaube aber auch das es mit den ' Zeichen zusammenhängt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:44 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