Delphi 从 FDTable 中删除所有记录
Delphi Delete all records from FDTable
我正在尝试使用
删除我的 FDTable 组件中的所有记录
mytable.Delete;
但没有记录被删除。
谁能建议我一种删除 FdTable 中所有记录的方法。
编辑
我是这样修改的,
for i := mytable.RecordCount - 1 downto 0 do
begin
mytable.Delete;
end;
mytable.Refresh;
但它花费了很多时间,因为我的 fdtable 中有很多行。
尝试
因为删除所有行会影响性能。
如果这不起作用,那么为什么不创建数据集运行时然后释放对象。
删除底层数据库中的所有记录table(最好的方法取决于数据库)并只调用一次刷新。
如果您必须通过 TFdTable 执行此操作,请使用 BeginBatch、执行删除(不刷新)、EndBatch,然后再刷新。
mytable.BeginBatch;
for i := mytable.RecordCount - 1 downto 0 do
begin
mytable.Delete;
end;
mytable.EndBatch;
mytable.Refresh;
尝试
MyTable.EmptyDataSet;
可能要做的事情比这多一点,但您没有说明如何填充 MyTable
。
我建议您为作业使用存储过程,而不是从您的应用程序中使用 SQL。存储过程制作简单,速度极快,因为它们直接在服务器上运行。
只需为您的 table 创建一个存储过程;
sp_deleteall
并在里面做一行 sql:
delete from mytable
从您的应用程序中,将 TFDStoredProc 拖放到表单上,link 将其添加到服务器上的存储过程,然后调用该过程
`
sp_deleteall.ExecProc;
要知道删除了多少条记录,只需在程序执行后调用:
ShowMessage(IntToStr(sp_deleteall.RowsAffected) + ' records were deleted.');
试一试...
表格从快到慢。前两个是您在服务器端执行的命令。
- 关闭 table 并执行 SQL DDL 命令
TRUNCATE TABLENAME;
然后重新打开。这需要独占访问 table.
- 使用 SQL DML 命令
DELETE FROM TABLENAME;
。这不需要独占访问权限。
- 使用循环客户端。慢很多并触发很多客户端事件。
要删除 FDMemTable 上的所有记录,您需要做的就是
MyTable.Active := False;
我正在尝试使用
删除我的 FDTable 组件中的所有记录mytable.Delete;
但没有记录被删除。
谁能建议我一种删除 FdTable 中所有记录的方法。
编辑
我是这样修改的,
for i := mytable.RecordCount - 1 downto 0 do
begin
mytable.Delete;
end;
mytable.Refresh;
但它花费了很多时间,因为我的 fdtable 中有很多行。
尝试
因为删除所有行会影响性能。
如果这不起作用,那么为什么不创建数据集运行时然后释放对象。
删除底层数据库中的所有记录table(最好的方法取决于数据库)并只调用一次刷新。
如果您必须通过 TFdTable 执行此操作,请使用 BeginBatch、执行删除(不刷新)、EndBatch,然后再刷新。
mytable.BeginBatch;
for i := mytable.RecordCount - 1 downto 0 do
begin
mytable.Delete;
end;
mytable.EndBatch;
mytable.Refresh;
尝试
MyTable.EmptyDataSet;
可能要做的事情比这多一点,但您没有说明如何填充 MyTable
。
我建议您为作业使用存储过程,而不是从您的应用程序中使用 SQL。存储过程制作简单,速度极快,因为它们直接在服务器上运行。 只需为您的 table 创建一个存储过程;
sp_deleteall
并在里面做一行 sql:
delete from mytable
从您的应用程序中,将 TFDStoredProc 拖放到表单上,link 将其添加到服务器上的存储过程,然后调用该过程 `
sp_deleteall.ExecProc;
要知道删除了多少条记录,只需在程序执行后调用:
ShowMessage(IntToStr(sp_deleteall.RowsAffected) + ' records were deleted.');
试一试...
表格从快到慢。前两个是您在服务器端执行的命令。
- 关闭 table 并执行 SQL DDL 命令
TRUNCATE TABLENAME;
然后重新打开。这需要独占访问 table. - 使用 SQL DML 命令
DELETE FROM TABLENAME;
。这不需要独占访问权限。 - 使用循环客户端。慢很多并触发很多客户端事件。
要删除 FDMemTable 上的所有记录,您需要做的就是
MyTable.Active := False;