Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zquery AUTO_INCREMENT problem, wiedermal (https://www.delphipraxis.net/102892-zquery-auto_increment-problem-wiedermal.html)

TheGame1492 6. Nov 2007 16:00

Datenbank: MySQL • Version: 5 • Zugriff über: ZEOSDBO-6.6.1_beta

Zquery AUTO_INCREMENT problem, wiedermal
 
Ich benutzt MySQL 5 und die neue Version der Zeos-Kombo.

Also, ich hab mit folgenden Code eine Table erzeugt:

Delphi-Quellcode:
   .
   .
   .
    with ZQuery1 do
    begin
      SQL.Clear;
      SQL.Add('create table `adressbuch`');
      SQL.Add('(');
      SQL.Add('  `id` Integer unsigned Not Null Auto_Increment,');
      SQL.Add('  `vorname`  char(30),');
      SQL.Add('  `name` char(30),');
      SQL.Add('  `adresse` char(30),');
      SQL.Add('  `wohnort` char(10),');
      SQL.Add('  `plz`  Char(10),');
      SQL.Add('  primary key(`id`)');
      SQL.Add(')');

      execsql;
    end;
   .
   .
   .
in der Table sollen Adressdaten gespeichert werden.
Hinzufügen von neuen Daten tue ich mit folgendem Code:

Delphi-Quellcode:
.
.
.
    ZQuery1.SQL.Text:='INSERT INTO `adressbuch` '+
                    '(`id`, `vorname`, `name`, `adresse`, `wohnort`, `plz`)'+
                    ' VALUES '+
                    '('''', '''+edVorname.Text+''', '''+edNachName.Text+
                    ''', '''+edAdresse.Text+''', '''+edWohnort.Text+
                    ''', '''+edPLZ.Text+''');';

    ZQuery1.ExecSql;
.
.
.
Wenn ich das nun ausführe kommt aber folgender Fehler:
"SQL Error: Incorrect integer value: "for column 'id' at row 1."

Was mach ich falsch? ;)

shmia 6. Nov 2007 16:33

Re: Zquery AUTO_INCREMENT problem, wiedermal
 
Autoicrement-Felder dürfen bei INSERT-Anweisungen nicht angegeben werden, da sie von der Datenbank vergeben werden!!
Delphi-Quellcode:
ZQuery1.SQL.Text:='INSERT INTO adressbuch '+ 
                 '(vorname, name, adresse, wohnort, plz)'+ 
                 ' VALUES('+QuotedStr(edVorname.Text) + ','+QuotedStr(edNachName.Text)+ ','+ ...
Ich habe hier auch gleich zwei weitere Fehler korrigiert.
1.) diese Accents (`) haben bei den Feldnamen nichts verloren !! SQL-92 Standard wären doppelte Anführungszeichen (")
2.) QuoteStr() verwendet anstelle der Hochkomma-Orgie

TheGame1492 6. Nov 2007 17:19

Re: Zquery AUTO_INCREMENT problem, wiedermal
 
thx, funzt nun ;)

Sharky 7. Nov 2007 06:41

Re: Zquery AUTO_INCREMENT problem, wiedermal
 
Zitat:

Zitat von TheGame1492
thx, funzt nun ;)

Hai,

evntuell solltest Du auch überlegen mit Parametern zu arbeiten. Dann musst Du dich nicht darum kümmern das die Daten in der richtigen Form an die Datenbank übergeben werden. Gerade bei Datumswerten ist das recht nützlich.

Delphi-Quellcode:
  with ZQuery1 do
  begin
    SQL.Text := 'INSERT INTO adressbuch (vorname, name, adresse, wohnort, plz)'
      + ' VALUES (:vorname,:name,:adresse,:wohnort,:plz)';
    ParamByName('vorname').AsString := edVorname.Text;
    ParamByName('name').AsString := edNachName.Text;
    ParamByName('adresse').AsString := edAdresse.Text;
    ParamByName('wohnort').AsString := edWohnort.Text;
    ParamByName('plz').AsString := edPlz.Text;
    ExecSQL;
  end;


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