2016-12-25 5 views
3

SQLite 데이터베이스의 table1에서 INSERT, UPDATE 또는 DELETE 명령을 실행 한 후 FDQuery.ExecSQL FireDAC 명령의 영향을받는 수를 얻는 방법은 무엇입니까?FireDac FDQuery.execsql 명령의 영향을받는 행 수를 얻습니다.

FDQuery.SQL.Text:='UPDATE table1 SET col1='abc' WHERE id<100'; 
FDQuery.ExecSQL; 

영향을받는 행 수는 어떻게 얻을 수 있습니까?

ADO의 동일한 쿼리는 영향을받는 행의 수를 MSSQL 데이터베이스에서 반환합니다.

AffectedCount:=ADOQuery.ExecSQL; 

답변

5

다양한 방법이 있습니다.

n := FDConnection1.ExecSQL('UPDATE table1 SET col1=''abc'' WHERE id<100'); 

http://docwiki.embarcadero.com/RADStudio/Seattle/en/Executing_Commands_(FireDAC) http://docwiki.embarcadero.com/Libraries/Seattle/en/FireDAC.Comp.Client.TFDCustomConnection.ExecSQL


는 SQL 명령을 실행하고 영향을받는 행의 수를 반환합니다.


FDQuery.SQL.Text:='UPDATE table1 SET col1=''abc'' WHERE id<100'; 
FDQuery.ExecSQL; 
n := FDQuery.RowsAffected; 

http://docwiki.embarcadero.com/RADStudio/Seattle/en/Executing_Commands_(FireDAC) http://docwiki.embarcadero.com/Libraries/Seattle/en/FireDAC.Comp.Client.TFDRdbmsDataSet.RowsAffected

얻기 DBMS 피드백

사용 TFDQuery.RowsAffected 속성은 예를 들어, 삭제 된 행의 수에 의해 (명령에 의해 처리 된 행의 수를 얻을 수 DELETE 명령을 사용하십시오. 주 : MS SQL Server의 경우, 스토어드 프로 시저 또는 테이블 트리거가 SET NOCOUNT ON을 생략 할 경우 RowsAffected가 예기치 않게 -1과 같을 수 있습니다. 그런 다음 TFDQuery.RecordCount 속성을 사용하여 반입 된 행 수를 가져옵니다.

FDQuery.SQL.Text:='UPDATE table1 SET col1=''abc'' WHERE id<100'; 
FDQuery.ExecSQL; 
FDQuery.SQL.Text:='SELECT changes()'; 
FDQuery.Open; 
n := FDQuery.Fields[0].AsInteger; 

http://docwiki.embarcadero.com/Libraries/Seattle//en/Data.DB.TDataSet.PSExecuteStatement

PSExecuteStatement

https://www.sqlite.org/lang_corefunc.html#changes


는 ASQL의 실행에 의해 영향을 행의 수를 반환한다.

AnyDAC이 이것을 구현하는지 알 수 없습니다.