Quels sont les « Biens manquants SQL » ici?
Question
Lorsque vous essayez d'exécuter le code:
function TDBClass.addNome(nome: String): String;
var
rsnome: TADOQuery;
begin
rsnome := TADOQuery.Create(nil);
rsnome.Connection := connection;
rsnome.Open();
rsnome.SQL.Clear;
rsnome.SQL.Text:='UPDATE enroll SET nome = "test" where id ="1"';
rsnome.Parameters.ParamByName('nome').Value:= nome;
rsnome.ExecSQL;
rsnome.post();
rsnome.Close();
rsnome.Free();
end;
Je reçois le message d'erreur « manquant propriété SQL ». Où est-ce que je me trompe?
Merci à l'avance!
La solution
Je ne pense pas que vous voulez utiliser Ouvrir du tout, et que vous utilisez correctement les paramètres.
dire que le SQL n'a pas: PARAM placeholders en elle. Je pense que ce devrait être quelque chose comme: rsnome.SQL.Text:='UPDATE enroll SET nome = :NOME where id = :ID';
Voir cet exemple: AdoQuery erreur en utilisant des paramètres
Autres conseils
Vous appelez rsnome.Open
avant de SQL par rsnome.SQL.Text := ...
.
Vous avez plusieurs erreurs. Vous appelez Open
avant que vous ayez assigné SQL ths (et sans avoir besoin de le faire).
Vous essayez de définir une valeur de paramètre n'avez pas créé un paramètre à accepter. (BTW, je fais aussi un paramètre ID, vous pouvez l'utiliser pour mettre à jour plus que le nom d'une personne.)
Vous manipulez pas faire en sorte que les choses se nettoyer dans le cas où il y a une erreur (qui, étant donné le code affiché, il y aura certainement).
Vous utilisez Post
, ce qui est nécessaire avec une base de données SQL.
Essayez quelque chose comme ceci:
function TDBClass.addNome(nome: String): String;
var
rsnome: TADOQuery;
begin
rsnome := TADOQuery.Create(nil);
try
rsnome.Connection := connection;
rsnome.SQL.Clear;
rsnome.SQL.Text:='UPDATE enroll SET nome = :nome where id ="1"';
rsnome.Parameters.ParamByName('nome').Value:= nome;
rsnome.ExecSQL;
rsnome.Close();
finally
rsnome.Free();
end;
end;