2011-11-23 2 views
2

ADODB를 Delphi 7에서 사용하고 UPDATE 쿼리의 경우 TADOConnection Execute 프로 시저 "recordsAffected"변수를 사용하여 수정 된 레코드의 수를 얻습니다. 이 같은 :ADODB : 매개 변수화 된 쿼리가있는 수정 된 레코드의 수

iResReq 수정 된 레코드 번호입니다
MyConnexion.Execute(sReq, iResReq, [eoExecuteNoRecords]); 

.

지금 내가 좋아하는 매개 변수화 된 SQL과 매개 변수화 된 쿼리를 사용하려면 :

SQL.Add('UPDATE TABLE SET NAME="TEST" WHERE NAME=:PARAM); 
Parameters.ParamByName('PARAM').text:='Smith'; 

하지만 난 정말 수정 된 레코드 수를 찾는 방법을 모르겠어요. 제 질문에 덧붙여 ADODB 매개 변수화 된 쿼리에 대한 좋은 tuto를 알고 있습니까?

+0

매우 좋습니다! ExecSQL은 FUNCTION이며 수정 된 레코드의 수를 반환한다는 것을 알지 못했습니다. – philnext

+1

Mikael이 그의 답변에서 지적했듯이 [TADOCommand] (http://docwiki.embarcadero.com/VCL/en/ADODB.TADOCommand)가이 목적에 더 적합합니다. [TADOQuery.ExecSQL] (http://docwiki.embarcadero.com/VCL/en/ADODB.TADOQuery.ExecSQL) 내부적으로 [TADOCommand.Execute]를 호출합니다 (http://docwiki.embarcadero.com/VCL/en/ADODB .TADOCommand.Execute), 조상에서 [TCustomADODataSet] (http://docwiki.embarcadero.com/VCL/en/ADODB.TCustomADODataSet). 그래서 나는 [TADOCommand] (http://docwiki.embarcadero.com/VCL/en/ADODB.TADOCommand);)를 선호 할 것입니다. – TLama

+0

좋아, 나는 대답을 가지고있다. 그러나 'TADOCommand.execute', 'TADOQuery.execSQL'중에서 '좋은'선택은 ... 분명하지 않습니다. – philnext

답변

4

TADOCommand를 사용하면 다음과 같은 작업을 수행 할 수 있습니다. (주석에 TLama에서 언급 한 바와 같이) 당신이에는 ExecSQL를 사용하는 경우

var 
    RecordsAffected: Integer; 
begin 
    ADOCommand1.CommandText := 'UPDATE TABLE SET NAME="TEST" WHERE NAME=:PARAM'; 
    ADOCommand1.Parameters.ParamByName('PARAM').Value:='Smith'; 
    ADOCommand1.Execute(RecordsAffected, EmptyParam); 

TADOQuery로 할 수도있다.

+0

내 코드가 잘못되었습니다. (나는 그것을 편집 할 것입니다!) CommandText는 매개 변수를 허용합니까? – philnext

+0

@philnext - 네, CommandText에서 매개 변수를 사용할 수 있습니다. –

+0

감사합니다 ... Execute와 ExecSQL을 비교합니다 – philnext