Avr*_*rob 4 delphi sqlite firedac
FDQuery.ExecSQL
在SQLITE数据库的table1上执行INSERT,UPDATE或DELETE命令后,如何获取受FireDAC命令影响的计数?
FDQuery.SQL.Text:='UPDATE table1 SET col1='abc' WHERE id<100';
FDQuery.ExecSQL;
Run Code Online (Sandbox Code Playgroud)
我们如何获得受影响的行数?
ADO中的相同查询从MSSQL数据库返回受影响的行数.
AffectedCount:=ADOQuery.ExecSQL;
Run Code Online (Sandbox Code Playgroud)
有很多方法.
n := FDConnection1.ExecSQL('UPDATE table1 SET col1=''abc'' WHERE id<100');
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)
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,当存储过程时,RowsAffected可能意外地等于-1或表触发器省略SET NOCOUNT ON.然后,使用TFDQuery.RecordCount属性获取获取的行数.
https://www.sqlite.org/lang_corefunc.html#changes
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;
Run Code Online (Sandbox Code Playgroud)
http://docwiki.embarcadero.com/Libraries/Seattle//en/Data.DB.TDataSet.PSExecuteStatement
PSExecuteStatement返回执行ASQL所影响的行数.
我不知道AnyDAC是否实现了这一点.