AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mysql Insert Fehler

Ein Thema von Masterof · begonnen am 14. Feb 2005 · letzter Beitrag vom 22. Feb 2005
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Masterof

Registriert seit: 12. Feb 2004
Ort: Bad Elster
142 Beiträge
 
Delphi 7 Enterprise
 
#1

Mysql Insert Fehler

  Alt 14. Feb 2005, 16:06
Datenbank: mysql • Version: 4.0 • Zugriff über: mysql
Hallo!!

Ich habe eine Anwendung geschrieben die Wörter aus einer Textdatei ausließt ordnet und in eine Mysql Datenbank schreibt.
Die Wörter stehen in einem Stringgrid, wenn ich sie Zeile für Zeile in die Datenbank schreiben möchte bricht das Programm ab und bringt folgenden Fehler.

You have an error in your Sql Syntax.

Ich verwende die ZeosAccess Komponenten für den Zugriff auf die Datenbank.
Hier ist der Quellcode bei dem der Fehler entsteht.
Delphi-Quellcode:
procedure Tfrmwordconvert.InMySql1Click(Sender: TObject);
var i : integer;
begin
for i:= 1 to sgwords.rowcount -1 do
 begin
  connection.DMmysql.ZQuery1.SQL.Text:= 'Insert Into english ' +
     '(`ordnr`, `words`)'+
                    ' VALUES '+
                    '('''+sgwords.Cells[0,i]+''', '''+sgwords.Cells[2,i]+''');';
                    //showmessage(connection.DMmysql.ZQuery1.SQL.Text);

  connection.DMmysql.ZQuery1.ExecSQL;

end;
end;
Achso, bevor ich es vergesse, wenn ich das ganze mit einem Datensatz mache funktioniert es.

MfG Master
.: Meine Homepage :.
http://www.micha-hertel.de
  Mit Zitat antworten Zitat
Benutzerbild von lume96
lume96

Registriert seit: 14. Sep 2003
Ort: Rognac/Marseille - Frankreich
128 Beiträge
 
Delphi 7 Professional
 
#2

Re: Mysql Insert Fehler

  Alt 14. Feb 2005, 16:40
Moin,

könnte es sein, dass Deine Wörter aus der Text-Datei vielleicht irgendwelche Zeichen beinhalten, die Dein SQL-Statment "zerstören" (z.B. , oder ', etc...).

Sicherheitshalber würde ich es mal mit Parametern versuchen. Das sollte in etwa so aussehen :
Delphi-Quellcode:
  ZQuery1.Sql.Text := 'INSERT INTO ENGLISH (ordnr,words) VALUES (:onr,:wds)';

  ZQuery1.Params.Clear;
  ZQuery1.Params.CreateParam(ftInteger,'onr', ptInput);
  ZQuery1.Params.CreateParam(ftString,'wds', ptInput);

  ZQuery1.ParamByName('onr').AsInteger := sgwords.Cells[0,i];
  ZQuery1.ParamByName('wds').AsString := sgwords.Cells[2,i];
  ZQuery1.ExecSQL;
Ich hab den Code jetzt nicht getestet, kann also sein, dass er so nicht ganz korrekt ist (sollte Dich lediglich in die richtige Richtung bringen).

(Typen unter Umständen anpassen, ich bin von einem Integer für die "ornr" und einem String für die "words" ausgegangen).


Tschüss,
Lutz
Lutz Meyer
  Mit Zitat antworten Zitat
Masterof

Registriert seit: 12. Feb 2004
Ort: Bad Elster
142 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Mysql Insert Fehler

  Alt 14. Feb 2005, 17:12
Hallo!!

Ja du hattest recht, es sind Steuerzeichen die aus der Textdatei im SQL String Fehler verursachen.
Du hast ftString verwendet, woher bekommst du diese Werte, es verursacht bei mir einen Fehler.

MfG Master
.: Meine Homepage :.
http://www.micha-hertel.de
  Mit Zitat antworten Zitat
Benutzerbild von lume96
lume96

Registriert seit: 14. Sep 2003
Ort: Rognac/Marseille - Frankreich
128 Beiträge
 
Delphi 7 Professional
 
#4

Re: Mysql Insert Fehler

  Alt 14. Feb 2005, 17:30
Moin,

Du gibst leider nicht an, welche Version der ZEOS Lib Du benutzt.

Hab jetzt mal kurz Delphi gestartet und eine ZQuery auf einen Form geschoben.

Bei meiner Version von ZEOS (6.15 stable) werden folgende units im uses hinzugefügt :
DB
ZAbstractRODataset
ZAbstractDataset
ZDataset

ftString sollte in einem dieser units definiert sein, denn bei mir gibt's beim kompilieren keinen Fehler.

Tschüss,
Lutz
Lutz Meyer
  Mit Zitat antworten Zitat
Masterof

Registriert seit: 12. Feb 2004
Ort: Bad Elster
142 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Mysql Insert Fehler

  Alt 14. Feb 2005, 17:39
Hallo!!

Ich habe eben mal schnell nachgeschaut, ich verwende die 6.1.5. Ok habe den Fehler gefunden, ich habe die Verbindung in einer DLL und musste in die Unit noch die 4 Sachen im uses Teil hinzufügen.

Danke
MfG Master
.: Meine Homepage :.
http://www.micha-hertel.de
  Mit Zitat antworten Zitat
BorlanDelphiUser

Registriert seit: 10. Mär 2003
Ort: Waltersdorf
91 Beiträge
 
Delphi 5 Professional
 
#6

Re: Mysql Insert Fehler

  Alt 22. Feb 2005, 13:11
Hallo ich hab gerade auch das problem beim INSERT und UPDATE ... weil ich PHP Code in der DB speichern will stören dort auch die Steuerzeichen ' ...

@lume96 igendwie blicke ich da bei deinem code nicht durch ... was bewirkt dieser? Wandelt der die ' Zeichen um oder wie?
Besucht auch mal meine Homepage www.r-kersten.de. Es wäre schön wenn ihr mir einen Gästebucheintrag hinterlasst.
  Mit Zitat antworten Zitat
Masterof

Registriert seit: 12. Feb 2004
Ort: Bad Elster
142 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Mysql Insert Fehler

  Alt 22. Feb 2005, 13:34
Hallo!!

Also der Code den Lume geposted hat ist bewirkt, dass du keine Steuerzeichen brauchst. Du schreibst den Text vorher in eine Stringvariable und übergibst den Inhalt an die Datenbank.
Du kannst mir ja die PHP Datei mal zukommen lassen. Wenn du möchtest dann schaue ich mal was ich machen kann.

MfG Master
.: Meine Homepage :.
http://www.micha-hertel.de
  Mit Zitat antworten Zitat
Benutzerbild von lume96
lume96

Registriert seit: 14. Sep 2003
Ort: Rognac/Marseille - Frankreich
128 Beiträge
 
Delphi 7 Professional
 
#8

Re: Mysql Insert Fehler

  Alt 22. Feb 2005, 13:46
Moin,

Zitat von BorlanDelphiUser:
@lume96 igendwie blicke ich da bei deinem code nicht durch ... was bewirkt dieser?
Wenn Du mit Parametern arbeitest, dann gibst Du in der eigentlichen SQL-Instruktion keine Werte mehr an, sondern "Variablen" (erkennt man durch den Doppelpunkt).

Mit dem ParamByName('abc').AsString := ... weist Du der Variable dann einen Wert zu.

Spontan fallen mir mindestens drei Vorteile ein :
1) Die eigentliche SQL-Instruktion ist leichter zu lesen.
2) Man ärgert sich nicht mehr mit der Unzahl von ' rum (soch nach dem Motto ...+'('''+... )
3) Strings (aber auch z.B. Dates) werden richtig formatiert.

Ich bin nie in die Interna eingestiegen, kann also leider nicht erklären, wie das intern gehandhabt wird. Warscheinlich werden die Strings, falls nötig, entsprechend ge-quoted.

Tschüss,
Lutz
Lutz Meyer
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#9

Re: Mysql Insert Fehler

  Alt 22. Feb 2005, 13:49
Zitat von lume96:
Ich bin nie in die Interna eingestiegen, kann also leider nicht erklären, wie das intern gehandhabt wird. Warscheinlich werden die Strings, falls nötig, entsprechend ge-quoted.
Das beginnt schon früher. Auch in einem Editfeld werden intern alle ' durch '' ersetzt. Der Lesevorteil ist nur ein kleiner Bonus, aber die Sache mit den Variablen und formatierungen fällt schon sehr ins Gewicht.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
BorlanDelphiUser

Registriert seit: 10. Mär 2003
Ort: Waltersdorf
91 Beiträge
 
Delphi 5 Professional
 
#10

Re: Mysql Insert Fehler

  Alt 22. Feb 2005, 14:00
Also ich erkläre euch mal mein Problem etwas genauer ...

Ich habe ein Memo wo ich bekiebigen PHP Code eingebe wie z.b.

Code:
<?
  echo 'Irgendwas';
?>
Und wenn ich dann folgendes mache ...
Delphi-Quellcode:
Form1.q_for_tipp.Sql.Text := 'INSERT INTO `code_schnipsel` SET code='''+ Form1.SynEdit1.Text +''' ';
Form1.q_for_tipp.ExecSql;
... dann kommt der tolle Fehler .. You have an Error in your SQL Syntax .. bla bla bla

Ist ja auch ganz klar weil diese schicken ' Zeichen eingefügt werden, was dann meinen SQL Syntax zerstöt . Wie kann ich dieses Problem lösen?
Besucht auch mal meine Homepage www.r-kersten.de. Es wäre schön wenn ihr mir einen Gästebucheintrag hinterlasst.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 08:12 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