删除表中的所有记录

Ata*_*Ata 1 database delphi

我们如何删除DELPHI中表中的所有记录?我们不允许使用这样的循环:

for k:=1 to table1.recordcount do
    begin
      table1.Last;
      table1.Delete;
    end;
Run Code Online (Sandbox Code Playgroud)

有什么解决方案吗?

小智 8

使用SQL数据库完成它的最佳方法是直接在服务器上执行删除操作,而无需移动客户端游标.当一个DELETE命令可以一次删除所有记录时,您最终会发出几个DELETE命令,每个命令对应一个记录.

更好的是,一些数据库有一个TRUNCATE命令(即Oracle,但可以有一个与其他数据库相同的命令),它可以清空整个表而不生成回滚数据,这通常更快,并且在服务器上需要的资源更少 - 只要您确定以后不需要回滚命令.

如果数据库不是SQL数据库,则文档将告诉您清空其表的最佳方法.


Mar*_*ema 6

您可以使用Query组件(TQuery或TAdoQuery或TSQLQuery),将其SQL.Text属性设置为Delete From <TableName>然后使用Query.ExecSQL(而不是Query.Open).


Rob*_*ank 6

Table1.EmptyTable怎么样?

或者,效率较低:

while table1.recordcount <> 0 do
  table1.Delete;
Run Code Online (Sandbox Code Playgroud)