Delphi & ADO - Как получить значение идентификатора столбца после публикации? - PullRequest
0 голосов
/ 13 января 2019

Чтобы добавить новую запись в таблицу базы данных MS SQL, я использовал компонент TADOTable и его методы Append и Post.

Моя таблица содержит ID столбец (PK, auto-increment), и после выполнения метода Post мне нужно знать, какое значение ID назначено в новой записи.

Как это сделать?

1 Ответ

0 голосов
/ 13 января 2019

Используйте TDOQuery компонент с OUTPUT, чтобы вставить данные и вернуть ID s как

AQ.Close;
AQ.SQL.Clear;
AQ.SQL.Add('INSERT INTO Table (Col1, Col2) OUTPUT INSERTED.ID VALUES (:Param1, :Param2)');
AQ.Parameters.ParamByName('Param1').Value:= SomeValue;
AQ.Parameters.ParamByName('Param2').Value:= SomeValue;
AQ.Open;

Обратите внимание, что вам нужно использовать Open метод вместо ExecSQL для возврата результатов.

Вы также можете использовать SCOPE_IDENTITY, и вам нужно будет создать параметр для возврата значения и назначить pdReturnValue для Direction этого параметра.

Var InsertedID: Integer;
...
AQ.Close;
AQ.SQL.Clear;
AQ.SQ.Add('INSERT INTO Table (Col1, Col2) VALUES (:Param1, :Param2);');
AQ.SQL.Add('SET :ID = SCOPE_IDENTITY()');
AQ.Parameters.ParamByName('Param1').Value:= SomeValue;
AQ.Parameters.ParamByName('Param2').Value:= SomeValue;
AQ.Parameters.ParamByName('ID').Direction:= pdReturnValue 
AQ.ExecSQL;
InsertedID:= AQ.Parameters.ParamByName('ID').AsInteger;

AQ в данном примере это TADOQuery.

...