Delphi-PRAXiS
Seite 1 von 2  1 2      

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)

Die Muhkuh 6. Feb 2006 12:37

Datenbank: Access • Version: 2000 • Zugriff über: ADO + SQL

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

ich hab nochmal ein Problem mit meiner Accessdatenbank, auf welche ich per ADO zugreife.

Delphi-Quellcode:
for I := 0 to Count - 1 do
    begin
      p := Items[I];

      profilequery.SQL.Text := 'INSERT INTO profile (user, password, domain, desc) ' +
        'VALUES (:user, :pw, :domain, :desc)';

      with profilequery.Parameters do
      begin
        ParamByName('user').Value := p.Benutzername;

        with TCipher_Rijndael.Create(PW, nil) do
        begin
          ParamByName('pw').Value := EncodeString(p.Passwort);
        end;

        ParamByName('domain').Value := p.Domain;
        ParamByName('desc').Value := p.Beschreibung;
      end;

      tmp := profilequery.SQL.text; // Nur zum Test [1]

      profilequery.ExecSQL;


      profilequery.Close;
    end;
Das Problem ist, dass nach dem einfügen der Parameter, die Parameter nicht verändert werden.
Will heißen, im tmp ([1]) steht noch der SQL-Befehl, ohne die veränderten Parametern.

Vielleicht verwende ich das auch falsch :mrgreen:

Danke für euere Antworten,

mfG,

Manu :hi:

Bernhard Geyer 6. Feb 2006 12:43

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

Zitat von Spider
Das Problem ist, dass nach dem einfügen der Parameter, die Parameter nicht verändert werden.
Will heißen, im tmp ([1]) steht noch der SQL-Befehl, ohne die veränderten Parametern.

Vielleicht verwende ich das auch falsch :mrgreen:

Das was du machst paßt schon. der String in profilequery.SQL.text darf ja auch nicht verändert werden sonst könnte er nicht mehr für weitere Abfragen verwendet werden und damit wäre ein Verwendung von Prepared Statements nicht möglich.

Folgende Codeanpassung dürfte die Inserts um einiges beschleunigen

Delphi-Quellcode:
  profilequery.SQL.Text := 'INSERT INTO profile (user, password, domain, desc) ' +
        'VALUES (:user, :pw, :domain, :desc)';
  profilequery.Prepare;

  for I := 0 to Count - 1 do
  begin
    p := Items[I];

    with profilequery.Parameters do
    begin
      ParamByName('user').Value := p.Benutzername;

      with TCipher_Rijndael.Create(PW, nil) do
      begin
        ParamByName('pw').Value := EncodeString(p.Passwort);
      end;

      ParamByName('domain').Value := p.Domain;
      ParamByName('desc').Value := p.Beschreibung;
    end;

    profilequery.ExecSQL;
  end;

Die Muhkuh 6. Feb 2006 12:48

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

danke. Hab leider vergessen zu schreiben, dass noch die Fehlermeldung "Syntaxfehler in der INSERT INTO-Anweisung" kommt :oops:
Vielleicht liegt es doch nicht an den Parametern (weil ich das zuerst dachte...).

Bernhard Geyer 6. Feb 2006 12:54

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

Zitat von Spider
Hi Bernhard,

danke. Hab leider vergessen zu schreiben, dass noch die Fehlermeldung "Syntaxfehler in der INSERT INTO-Anweisung" kommt :oops:
Vielleicht liegt es doch nicht an den Parametern (weil ich das zuerst dachte...).

Am SQL-Statement kann ich nichts verdächtiges erkennen.
Aber nimm mal statt Value -> AsString.
Kommt bei EncodeString auch ein "gültiger" String ohne $00 raus?

Die Muhkuh 6. Feb 2006 12:58

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

auch ohne EncodeString klappt das nicht. Und ich hab nur Value. AsString kommt "Undefinierter Bezeichner".

Ich verwende ja ein TADOQuery.

Bernhard Geyer 6. Feb 2006 13:00

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

Zitat von Spider
Ich verwende ja ein TADOQuery.

Ersetze mal TADOQuery durch TADODataset.

Die Muhkuh 6. Feb 2006 13:05

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

das ADODataset kennt auch kein AsString :-\

Bernhard Geyer 6. Feb 2006 13:12

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

Zitat von Spider
Hi,

das ADODataset kennt auch kein AsString :-\

OK, gibt kein AsString. Hab's mit den Feld-Klassen verwechselt.

Die Muhkuh 6. Feb 2006 13:13

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

Zitat von Bernhard Geyer
Zitat:

Zitat von Spider
Hi,

das ADODataset kennt auch kein AsString :-\

OK, gibt kein AsString. Hab's mit den Feld-Klassen verwechselt.

Dann gehe ich gerade davon, dass du mit deinem Latein am Ende bist?

Bernhard Geyer 6. Feb 2006 13:18

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

Zitat von Spider
Dann gehe ich gerade davon, dass du mit deinem Latein am Ende bist?

Fast

Nenn mal deine Parameter Param1, ... Param4.
Diese Felder sind doch alle vom Typ varchar, oder?


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

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