Der Trick liegt daran auch wirklich prepared Statements zu verwenden.
So wie du es getestet hast, hast du nur Parameter verwendet.
Delphi-Quellcode:
fdQuery1.SQL.Text := 'SELECT * FROM MyTable where ID=:ID'
fdQuery1.Prepare
...
fdQuery1.ParamByName('ID').Value := i;
Windows Vista - Eine neue Erfahrung in Fehlern.