Via een TADOCommand component stuur ik het volgende commando naar een Access database:
Nu hetzelfde scenario met dezelfde component, maar met een parameterized query:

Ook als ik de wachtwoorden tussen rechte haken [ en ] zet, bakt de parameterized query er niets van. Zelfde resultaat bij de wachtwoorden tussen enkele aanhalingstekens ' of dubbele aanhalingstekens ": de syntaxis wordt ongeldig genoemd. Ander testje:
Nu verandert Delphi automatisch de namen van de parameters naar NewPassword] en OldPassword]. Als je de namen netjes terugverandert naar NewPassword en OldPassword werkt de query nog steeds niet, telkens komt dezelfde foutmelding terug.
Ik heb inmiddels ongeveer alles geprobeerd wat ik kan verzinnen. Heeft iemand een idee hoe ik de query toch parameterized kan maken?
SQL:
Prima, het database-wachtwoord wordt netjes veranderd van 'oud' naar 'nieuw'. Ook met rechte haken om de wachtwoorden heen werkt het. Dit heeft als voordeel dat je ook een leeg wachtwoord kunt gebruiken, bijvoorbeeld om het wachtwoord te wissen:1
| ALTER DATABASE PASSWORD nieuw oud |
SQL:
1
| ALTER DATABASE PASSWORD [] [oud] |
Nu hetzelfde scenario met dezelfde component, maar met een parameterized query:
SQL:
1
| ALTER DATABASE PASSWORD :NewPassword :OldPassword |
Delphi:
Resultaat:1
2
3
4
5
6
| procedure TMainForm.Button1Click(Sender: TObject); begin DataMod.CmdChangeDBPassword.Parameters[0].Value := 'nieuw'; DataMod.CmdChangeDBPassword.Parameters[1].Value := 'oud'; DataMod.CmdChangeDBPassword.Execute; end; |

Ook als ik de wachtwoorden tussen rechte haken [ en ] zet, bakt de parameterized query er niets van. Zelfde resultaat bij de wachtwoorden tussen enkele aanhalingstekens ' of dubbele aanhalingstekens ": de syntaxis wordt ongeldig genoemd. Ander testje:
SQL:
1
| ALTER DATABASE PASSWORD [:NewPassword] [:OldPassword] |
Nu verandert Delphi automatisch de namen van de parameters naar NewPassword] en OldPassword]. Als je de namen netjes terugverandert naar NewPassword en OldPassword werkt de query nog steeds niet, telkens komt dezelfde foutmelding terug.
Ik heb inmiddels ongeveer alles geprobeerd wat ik kan verzinnen. Heeft iemand een idee hoe ik de query toch parameterized kan maken?
Een goede grap mag vrienden kosten.