Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Abfrage fehler?? (https://www.delphipraxis.net/23459-abfrage-fehler.html)

Masterof 3. Jun 2004 14:59


Abfrage fehler??
 
Hallo alle zusammen!!

Wer kann mir sagen, warum Delphi hier 3 Parameter verlangt?? Was muss ich machen um dies zu verhindern??

Delphi-Quellcode:
sqlupdate.SQL.Clear;
    showmessage('insert into worte (de,en,besch) values ("'+edhinde.Text+'","'+edhinen.Text+'","'+mehinbesch.Text+'")');
    sqlupdate.SQL.Add('insert into worte (de,en,besch) values ("'+edhinde.Text+'","'+edhinen.Text+'","'+mehinbesch.Text+'")');
    sqlupdate.ExecSQL;
MfG Master

[edit=r_kerber]Delphi-Tags eingefügt. Mfg, r_kerber[/edit]

sakura 3. Jun 2004 15:00

Re: Abfrage fehler??
 
Nutze bitte die [delphi]-Tags ;)

...:cat:...

Stevie 3. Jun 2004 15:04

Re: Abfrage fehler??
 
Wo genau verlangt Delphi 3 Parameter?
Von welchem Typ ist denn sqlupdate?

shmia 3. Jun 2004 15:14

Re: Abfrage fehler??
 
Zitat:

Zitat von Masterof
Wer kann mir sagen, warum Delphi hier 3 Parameter verlangt?? Was muss ich machen um dies zu verhindern??

Delphi-Quellcode:
sqlupdate.SQL.Clear;
    showmessage('insert into worte (de,en,besch) values("' +edhinde.Text+'","'+edhinen.Text+'","'+mehinbesch.Text+'")');
    sqlupdate.SQL.Add('insert into worte (de,en,besch) values ("' +edhinde.Text+'","'+edhinen.Text+'","'+mehinbesch.Text+'")');
    sqlupdate.ExecSQL;

Du hast gleich ein paar Fehler eingebaut.
1.) Strings werden bei SQL mit einfachen Hochkomma's eingeschlossen !
2.) doppelter Code führt nur zur Verwirrung
3.) ohne die Verwendung von QuotedStr oder Parameters gehen solche SQL-Anweisungen in die Hose
Besser so:
Delphi-Quellcode:
// die Zuweisung auf .SQL.Text beinhaltet schon .SQL.Clear
sqlupdate.SQL.Text := 'insert into worte(de,en,besch) values('+QuotedStr(edhinde.Text)+','+QuotedStr(edhinen.Text)+','+QuotedStr(mehinbesch.Text)+')');
 
ShowMessage(sqlupdate.SQL.Text); // zu Debugzwecken
sqlupdate.ExecSQL; // und Feuer

Robert_G 3. Jun 2004 15:37

Re: Abfrage fehler??
 
Wozu dieses Stringgefriemel?
Delphi-Quellcode:
With ADOQuery Do
Begin
  SQL.Text :=
    'INSERT INTO worte' + #10 +
    ' (de, en, besch)' + #10 +
    'VALUES' + #10 +
    ' (:i_edHinDe, :i_edHinEn, :i_meHinBesch)';
  // Parse Statement um Variablen zu erkennen
  Prepared := True;
  // Parameterzuweisung
  With Parameters Do
    ParamByName('i_edHinDe').Value   := edHinDe.Text;
    ParamByName('i_edHinEn').Value   := edHinEn.Text;
    ParamByName('i_meHinBesch').Value := meHinBesch.Text;
  End;
  // Ausführen
  ExecSQL;
End;
Ich habe jetzt nicht die Zeit um meine übliche Standardpredigt zu dem Thema zu halten.
Es sollte eigentlich klar sein, dass diese zumsammengebastelten Statements eigentlich einen DB-Newbie kennzeichnen. ;)


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