2011-07-03 206 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會實際刪除實際數據庫中的記錄嗎? –

相關問題