如何删除DELPHI中表中的所有记录?我们不允许使用这样的循环:
for k:=1 to table1.recordcount do
begin
table1.Last;
table1.Delete;
end;
有没有解决方案?
答案 0 :(得分:8)
使用SQL数据库完成它的最佳方法是直接在服务器上执行删除操作,而无需移动客户端游标。当一个DELETE命令可以一次删除所有记录时,您最终会发出多个DELETE命令,每个记录一个。
更好的是,某些数据库有一个TRUNCATE命令(即Oracle,但可以有一个与其他数据库相同的命令),它可以清空整个表而不生成回滚数据,这通常更快,并且在服务器上需要更少的资源 - 只要您确定以后不需要回滚命令。
如果数据库不是SQL数据库,文档将告诉您清空其表的最佳方法。
答案 1 :(得分:6)
您可以使用Query组件(TQuery或TAdoQuery或TSQLQuery),将其SQL.Text属性设置为Delete From <TableName>
,然后使用Query.ExecSQL
(而不是Query.Open
)。
答案 2 :(得分:5)
Table1.EmptyTable怎么样?
或者效率低下:
while table1.recordcount <> 0 do
table1.Delete;