2011-07-03 208 views
0

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

for k:=1 to table1.recordcount do 
    begin 
     table1.Last; 
     table1.Delete; 
    end; 

有没有解决方法?

+1

什么样的表? BDE TTable? ADO表? dbExpress的? –

回答

8

最好的方式来与SQL数据库完成它是直接执行服务器上的删除,无需移动客户端游标。您的方式最终会发出几个DELETE命令,每个记录一个,当一个DELETE命令可以一次删除所有记录时。更好的是,一些数据库有一个TRUNCATE命令(这是Oracle,但可以有一个等效的命令用于其他数据库),可以清空整个表而不生成回滚数据,这通常更快,并且需要更少的服务器资源 - 只要你确定你以后不需要回滚命令。

如果数据库不是SQL数据库,文档将告诉您哪个是清空其表的最佳方式。

6

你可以使用一个查询组件(TQuery的或TAdoQuery或TSQLQuery),其SQL.Text属性设置为Delete From <TableName>,然后用Query.ExecSQL(而不是Query.Open)。

5

Table1.EmptyTable如何?

或者,效率较低:

while table1.recordcount <> 0 do 
    table1.Delete; 
+1

+1为EmptyTable。 –

+0

这个Table1.EmptyTable会实际删除实际数据库中的记录吗? –

相关问题