Quali sono le “proprietà SQL mancante” qui?
Domanda
Quando si tenta di eseguire il codice:
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;
Ho ricevuto il messaggio di errore "Missing proprietà SQL". Dove ho sbagliato?
Grazie in anticipo!
Soluzione
Non credo che si desidera utilizzare Aperto a tutti, e si utilizza i parametri in modo non corretto.
cioè lo SQL non ha alcuna: PARAM segnaposto in essa. Penso che dovrebbe essere qualcosa di simile: rsnome.SQL.Text:='UPDATE enroll SET nome = :NOME where id = :ID';
Vedere questo esempio: AdoQuery errore utilizzando parametri
Altri suggerimenti
Si sta chiamando rsnome.Open
prima di impostare lo SQL rsnome.SQL.Text := ...
.
Hai diversi errori. Si sta chiamando Open
prima di aver assegnato THS SQL (e senza bisogno di farlo).
Si sta cercando di impostare un valore di parametro non si è creato un parametro di accettare. (A proposito, mi piacerebbe fare anche un parametro ID, in modo da poter utilizzare questo per aggiornare più di nome di una persona.)
Non stai manipolazione fare in modo che le cose vengono pulite nel caso ci sia un errore (che dato il codice che ci certamente postato sarà).
Si sta utilizzando Post
, che non è necessario con un database SQL.
provare qualcosa di simile, invece:
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;