Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADO: Parameter funktionieren nicht(oder ich wende falsch an) (https://www.delphipraxis.net/62555-ado-parameter-funktionieren-nicht-oder-ich-wende-falsch.html)

shmia 6. Feb 2006 13:24

Re: ADO: Parameter funktionieren nicht(oder ich wende falsch
 
Zitat:

Zitat von Bernhard Geyer
Am SQL-Statement kann ich nichts verdächtiges erkennen.
Aber nimm mal statt Value -> AsString.

ADOParameter können entweder so
Delphi-Quellcode:
ADOdataset.Parameters.ParamValues['user'] := username;  // Variante A
// oder so
ADOdataset.Parameters.ParamByName('user').Value := username; // Variante B
befüllt werden.
Ich verwende meist Variante A, da weniger Schreibarbeit.
.AsString, .AsInteger, u.s.w. gibt es bei den Parametern nicht.

Zum Debuggen sollte man besser kein With ... Do Anweisung verwenden, sondern alles komplett ausschreiben.
Zumindest Delphi 2-5 können sonst die Inhalte beim Debuggen nicht anzeigen.

Wichtig: wenn die INSERT-Anweisung korrekt aussieht, aber dennoch Syntaxfehler gemeldet wird, liegt es meist an der Verwendung von reservierten Wörtern. Die Wörter "user" und "domain" könnten je nach SQL-Dialekt schon eine eigene Bedeutung haben.
Ich würde empfehlen, die Feldnamen zu ändern.

PS:
Delphi-Quellcode:
 // das gefällt mir überhaupt nicht
 // es sieht nach einem Speicherleck aus
 with TCipher_Rijndael.Create(PW, nil) do
 begin
   ParamByName('pw').Value := EncodeString(p.Passwort);
 end;
 // ich würde das Passwort zunächst direkt im Klartext speichern
 // nachdem das funktioniert hat, würde ich das verschlüsselte PW speichern

Die Muhkuh 6. Feb 2006 13:36

Re: ADO: Parameter funktionieren nicht(oder ich wende falsch
 
Hi,

bin jetzt wieder zurück zum TADOQuery.

@shmia

Danke :)
Das mit den Feldbezeichnungen wars. Hab die geändert und zack, gings.

Das mit deinem PS hab ich schon geändert, trotzdem danke ;-)

shmia 6. Feb 2006 13:43

Re: ADO: Parameter funktionieren nicht(oder ich wende falsch
 
Zitat:

Zitat von Spider
Das mit den Feldbezeichnungen wars. Hab die geändert und zack, gings.

Fein. Dann hoffe ich mal, dass sich diese reservierte Wörter in dein (und das der Mitleser) Gedächtnis eingebrannt hat.
Hier noch ein paar Listen dazu:
http://msdn.microsoft.com/library/de...ra-rz_9oj7.asp
http://developer.mimer.com/validator...rved-words.tml
http://www.jsoftware.com/books/help/...rved_words.htm
Man kann sich wirklich dumm und dämlich suchen, falls man eines dieser Wörter als Tabellen-, View- oder Feldname benützt.

Die Muhkuh 6. Feb 2006 13:48

Re: ADO: Parameter funktionieren nicht(oder ich wende falsch
 
Zitat:

Zitat von shmia
Zitat:

Zitat von Spider
Das mit den Feldbezeichnungen wars. Hab die geändert und zack, gings.

Fein. Dann hoffe ich mal, dass sich diese reservierte Wörter in dein (und das der Mitleser) Gedächtnis eingebrannt hat.
Hier noch ein paar Listen dazu:
http://msdn.microsoft.com/library/de...ra-rz_9oj7.asp
http://developer.mimer.com/validator...rved-words.tml
http://www.jsoftware.com/books/help/...rved_words.htm
Man kann sich wirklich dumm und dämlich suchen, falls man eines dieser Wörter als Tabellen-, View- oder Feldname benützt.

Hihi, dass hoffe ich auch :mrgreen:

Danke für die Links ;-) Sowas kann man immer brauchen :D

heyko 11. Apr 2007 11:32

Re: ADO: Parameter funktionieren nicht(oder ich wende falsch
 
Ich grabe diesen Thread mal wieder aus da mein Problem sehr ähnlich ist.


SQL:
Zitat:

SELECT * FROM tw_nutzer WHERE( userid = :param1 AND password = :param2 )
Code:
Delphi-Quellcode:
      {Zugriffsberechtigung des Nutzers aus TW_Nutzer abfragen}
      with qrySelNutzer do
      begin
        prepared:= true;
        active := false;
        close;
        Parameters.ParamByName('param1').Value  :=  edit_benutzer.text;
        Parameters.ParamByName('param2').Value :=  edit_password.text;
        prepared := true;
        ExecSQL;
      end;
Letzten Endes wird aber nur folgendes ausgeführt:
Zitat:

SELECT * FROM tw_nutzer WHERE ( userid = ? AND password = ? )
Hilfe :pale:

shmia 11. Apr 2007 11:40

Re: ADO: Parameter funktionieren nicht(oder ich wende falsch
 
Delphi-Quellcode:
with qrySelNutzer do
begin
   close;
   // Schreibweise mit ParamValues[] ist kürzer als ParamByName().Value
   Parameters.ParamValues['param1'] := edit_benutzer.text;
   Parameters.ParamValues['param2'] := edit_password.text;
//   ExecSQL; // FALSCH! SELECT * FROM .... gibt ja eine Datenmenge zurück
   Open; // Richtig
end;

mkinzler 11. Apr 2007 11:53

Re: ADO: Parameter funktionieren nicht(oder ich wende falsch
 
Im ursprünlichen Thread ging es aber um einen INSERT

heyko 11. Apr 2007 12:13

Re: ADO: Parameter funktionieren nicht(oder ich wende falsch
 
Zitat:

Zitat von mkinzler
Im ursprünlichen Thread ging es aber um einen INSERT

ja tut mir Leid ähnlich nicht identisch. :)

Leider hat mir das nicht geholfen. Habe es jetzt zwar abgekürzt aber laut ADOConnectionExecuteComplete sind die Platzhalter Fragezeichen immer noch da und wurden nicht durch die Werte ersetzt.

Habe es auf

Delphi-Quellcode:
      with qrySelNutzer do
      begin
        close;
        Parameters.ParamValues['param1'] :=  edit_benutzer.text;
        Parameters.ParamValues['param2'] :=  edit_password.text;
        Open;
...
geändert.

SQL Command:
SQL-Code:
SELECT *  FROM tw_nutzer WHERE ( userid = ? AND password = ? )

shmia 11. Apr 2007 13:24

Re: ADO: Parameter funktionieren nicht(oder ich wende falsch
 
Zitat:

Zitat von heyko
.. aber laut ADOConnectionExecuteComplete sind die Platzhalter Fragezeichen immer noch da und wurden nicht durch die Werte ersetzt.

Achso! Diesen SQL-Text mit ersetzten Parametern wirst du auch nicht so einfach bekommen.
Die Ersetzung der Parameter Fragezeichen findet erst tiefer in einer ADO Treiberschicht statt.

Trotzdem arbeitet die Abfrage mit Parametern richtig.
Möglicherweise kann man die Parameterersetzung anhand des Interface "Command15" selbst vornehmen,
aber das passt jetzt nicht mehr zu diesen Thread.

heyko 11. Apr 2007 13:27

Re: ADO: Parameter funktionieren nicht(oder ich wende falsch
 
Okay vielen Dank erstmal.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:14 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz