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