Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Feld durch verschlüsselten Text ersetzen

  Alt 9. Feb 2011, 21:31
Das mag schon möglich sein, aber ein Flaschenhals ist definitiv das Update mit dem gezeigten Verfahren.

Dafür sollte man ein prepared Statement mit einem Parameter nehmen.
Das geht erheblich schneller.

Eine Query erstellen mit folgendem SQL-Text
Code:
UPDATE MeineTabelle SET name = :CryptName WHERE MeineTabelle.ID = :ID
Die DataSource der Abfrage-Query als MasterSource der Update-Query festlegen.
Delphi-Quellcode:
UpdateQuery.Prepare;
try
while not AbfrageQuery.EOF do
  begin
    UpdateQuery.ParamByName( 'CryptName' ) := Crypt( AbfrageQuery.FieldByName( 'name' ).AsString );
    UpdateQuery.ExecSQL;
    AbfrageQuery.Next;
  end;
finally
  UpdateQuery.Unprepare;
end;
Ob der Aufruf genau so funktioniert hängt von den verwendeten Komponenten und DB ab.

Hallo,
leider funktioniert dies nicht.

Im Prinzip möchte ich ein Feld, welches verschlüsselt ist entschlüsseln.

Bei vorgeschlagener Vorgenhensweise erhalte ich die Exception, dass das Feld name nicht gefunden wurde.

Auch das Ersetzen durch
sqlText := 'Update Tabelle set name ='+ Crypt(Tabelle.FieildbyName('name').value, "WEDRFXEFCRTT"))+ 'where name = name;';
hilt nicht
Äh, bitte Transferleistung aktivieren ... DU kennst die korrekte Bezeichnung deiner Felder, WIR nicht!

Allerdings:
Code:
UPDATE
...
WHERE
  name = name
ist irgendwie sinnentleert, kann man dann auch gleich weglassen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo ( 9. Feb 2011 um 21:34 Uhr)
  Mit Zitat antworten Zitat