Précédent   Forum des professionnels en informatique > Bases de données > Autres SGBD > SQLite
SQLite Forum d'entraide SQLite
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/01/2011, 12h38   #1
Membre du Club
 
Homme Jean
Retraité
Inscription : juillet 2008
Messages : 174
Détails du profil
Informations personnelles :
Nom : Homme Jean
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : juillet 2008
Messages : 174
Points : 58
Points : 58
Par défaut compacter une base sqlite sous lazarus et linux

Bonjour,
Je bricole avec lazarus sous fedora 13 et sqlite.
Voila mon petit problème : si j'efface des enregistrements avec la commande
Code :
MQ:='Delete from DEPENSE WHERE CODE='+quotedstr(MCODE);
mes enregistrements sélectionnés sont bien effaces mais ma base à toujours la même taille, si j'ouvre cette base et table avec SQLITEBROWSER et que le lance la commande compact la taille de ma base diminue.
Sous Dbase mon apprentissage sur les bases et la programmation (oui c'est vieux) il y avait une commande de compactage utilisable à l'exécution sous delphi, mais sous lazarus et linux existe-t-elle pour une base sqlite similaire utilisable dans une application ?
Merci d'avance
PS : je ne lis pas l'Anglais
ovni76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2011, 00h53   #2
Membre éclairé
 
Patrick Seuret
Inscription : juin 2005
Messages : 338
Détails du profil
Informations personnelles :
Nom : Patrick Seuret

Informations forums :
Inscription : juin 2005
Messages : 338
Points : 334
Points : 334
Il semble qu'il y a une commande SQL spéciale "VACUUM" sans paramètres.

Voici du code en ADO.NET qui l'utilise:
Code :
1
2
3
4
5
USING (SQLiteCommand cmd = conn.CreateCommand())
{
  cmd.CommandText = "VACUUM";
  cmd.ExecuteNonQuery();
}
(tiré du site en anglais: http://sqlite.phxsoftware.com/forums/t/570.aspx)
Patrick Seuret est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2011, 07h11   #3
Membre du Club
 
Homme Jean
Retraité
Inscription : juillet 2008
Messages : 174
Détails du profil
Informations personnelles :
Nom : Homme Jean
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : juillet 2008
Messages : 174
Points : 58
Points : 58
Merci Patrick,
J'ai utilisé la commande suivante et la taille de ma base a vu sa taille divisée plus de 2 voici le code que j'ai utilisé
Code :
1
2
 Sqhistorique.SQL:='VACUUM';
  Sqhistorique.ExecSQL;
Merci A+
ovni76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2011, 07h38   #4
Membre du Club
 
Homme Jean
Retraité
Inscription : juillet 2008
Messages : 174
Détails du profil
Informations personnelles :
Nom : Homme Jean
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : juillet 2008
Messages : 174
Points : 58
Points : 58
A la mémoire avec l'âge, cette question je l'avais posé dans le forum de Lazarus avec la "réindexation" est trouvé à l'époque une réponse supérieure à celle indiquée précédemment en indiquant le nom de la base et pas celui de la table ce qui donnerais dans mon cas
Code :
1
2
 Sqhistorique.SQL:='VACUUM AUTO';
  Sqhistorique.ExecSQL;
à moins que le nom du composant étant lié à la base suffise ?
ovni76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h37.


 
 
 
 
Partenaires

Hébergement Web