L'utilisation de paramètres avec ADO Requête (mysql/MyConnector)

Aujourd'hui j'ai téléchargé et installé MyConnector si je peux utiliser Mysql avec ADO, tout installé, OK!, Je peux faire la connexion avec ODBC et de faire un lien à partir de mon delphi.

quand je construis ma Requête à runetime, j'obtiens un message d'erreur disant :

Projet Project1.exe ont soulevé l'exception de la classe EOleException avec le message suivant: "les Arguments sont de type incorrect, sont hors de la plage acceptable, ou sont en conflit les uns avec les autres". Le processus s'est arrêté. L'utilisation ou de l'Étape Exécuter pour continuer.

function TForm1.CreateSQL : TADOQuery;
begin
  result := TADOQuery.create(self);
  with Result do
  begin
    Connection     := MainConnection;
    CursorLocation := clUseServer;
    CursorType     := ctStatic;
    CacheSize      := 50;
    AutoCalcFields := true;
    ParamCheck     := true;
    Prepared       := true;
  end;
end;

procedure TForm1.login();
begin
  with CreateSQL do
  try
    with SQL do
    begin
      add('SELECT                       ');
      add('  *                          ');
      add('FROM                         ');
      add('  LisenswebUsers             ');
      add('WHERE                        ');
      add('  UserName     = :MyUsername '); //debugger exception here
      add('AND                          ');
      add('  UserPassword = :MyPassword '); //debugger exception here
      with Parameters do
      begin
        ParamByName('MyUsername').value := txtLogin.text;
        ParamByName('MyPassword').value := strmd5(txtPassword.text);
      end;
      Open;

      if Recordcount <> 1 then
      begin
        lblLoggedinAs.Text := format('Du er logget inn som: %s (%s)',[FieldByName('Username').AsString,FieldByName('UserEmailaddress').AsString]);
        MainPageControl.ActivePageIndex := 1;
      end else
      begin
        txtPassword.Text := '';
        txtPassword.SetFocus;
      end;
    end;
  finally
   free;
  end;
end;

La chose la plus étrange est que cela fonctionne si je désactiver le débogage dans delphi.

J'ai ce problème aussi bien. La requête fonctionne mais le débogueur déclenche une exception lors de l'affectation de la requête paramétrée (ou lors de l'appel de EndUpdate. Cela se produit si oui ou non les paramètres ont été déclarés à l'avance avec AddParameter. Définissant le champ DataType ne résout pas le problème (char(8) => ftFixedChar ou ftString), (int(10) UN => ftLongWord), etc. Sérieusement agaçant.

OriginalL'auteur Plastkort | 2010-09-29