FireDac 获取受 FDQuery.execsql 命令影响的行数
FireDac get the count of rows affected by FDQuery.execsql command
在 SQLITE 数据库的表 1 上执行 INSERT、UPDATE 或 DELETE 命令后,如何获取受 FireDAC FDQuery.ExecSQL
命令影响的计数?
FDQuery.SQL.Text:='UPDATE table1 SET col1='abc' WHERE id<100';
FDQuery.ExecSQL;
我们如何获得受影响的行数?
来自 MSSQL 数据库的 ADO returns 中的相同查询受影响的行数。
AffectedCount:=ADOQuery.ExecSQL;
有很多方法。
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 命令和 returns 受影响的行数。
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 服务器,当存储过程或 table 触发器省略 SET NOCOUNT ON 时,RowsAffected 可能意外地等于 -1。然后,使用 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;
http://docwiki.embarcadero.com/Libraries/Seattle//en/Data.DB.TDataSet.PSExecuteStatement
PSExecuteStatement returns 执行 ASQL.
影响的行数
不过我不知道 AnyDAC 是否实现了这个。
在 SQLITE 数据库的表 1 上执行 INSERT、UPDATE 或 DELETE 命令后,如何获取受 FireDAC FDQuery.ExecSQL
命令影响的计数?
FDQuery.SQL.Text:='UPDATE table1 SET col1='abc' WHERE id<100';
FDQuery.ExecSQL;
我们如何获得受影响的行数?
来自 MSSQL 数据库的 ADO returns 中的相同查询受影响的行数。
AffectedCount:=ADOQuery.ExecSQL;
有很多方法。
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 命令和 returns 受影响的行数。
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 服务器,当存储过程或 table 触发器省略 SET NOCOUNT ON 时,RowsAffected 可能意外地等于 -1。然后,使用 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;
http://docwiki.embarcadero.com/Libraries/Seattle//en/Data.DB.TDataSet.PSExecuteStatement
PSExecuteStatement returns 执行 ASQL.
影响的行数不过我不知道 AnyDAC 是否实现了这个。