2011-07-03 4 views
0

Comment supprimer tous les enregistrements d'une table dans DELPHI? nous ne sommes pas autorisés à utiliser la boucle comme ceci:Supprimer tous les enregistrements d'une table

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

Y at-il des solutions?

+1

Quel type de table? BDE TTable? Table ADO? dbExpress? –

Répondre

8

La meilleure façon d'y parvenir avec une base de données SQL est d'effectuer la supprimer directement sur le serveur, sans déplacer un curseur côté client. Ainsi, vous finissez par émettre plusieurs commandes DELETE, une pour chaque enregistrement, lorsqu'une seule commande DELETE peut supprimer tous les enregistrements à la fois. Mieux encore, certaines bases de données ont une commande TRUNCATE (Oracle, mais il existe une commande équivalente pour d'autres DB) qui peut vider une table entière sans générer de données d'annulation, ce qui est généralement plus rapide et nécessite moins de ressources sur le serveur - Tant que vous êtes sûr que vous n'avez pas besoin de revenir sur la commande plus tard.

Si la base de données n'est pas une base de données SQL, la documentation vous indiquera quelle est la meilleure façon de vider ses tables.

6

Vous pouvez utiliser un composant de requête (TQuery ou TADOQuery ou TSQLQuery), définissez sa propriété SQL.Text à Delete From <TableName> puis utilisez Query.ExecSQL (au lieu de Query.Open).

5

Que diriez-vous de Table1.EmptyTable?

Ou, moins efficacement:

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

+1 pour EmptyTable. –

+0

Est-ce que Table1.EmptyTable va réellement supprimer les enregistrements dans la base de données actuelle? –

Questions connexes