IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

XAMARIN - Supprimer des données(SQLite) au bout d'un certain temps


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 65
    Points : 35
    Points
    35
    Par défaut XAMARIN - Supprimer des données(SQLite) au bout d'un certain temps
    Bonjour,
    Je travail actuellement sur une application Android avec Xamarin en C#.
    J'utilise le package SQLite pour stocker des données, mais je souhaiterais que ces données soit supprimées après un certains temps.
    Je ne sais pas vraiment comment effectuer cela, c'est pourquoi je me tourne vers vous pour me donner des pistes de recherches.

    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    Bonjour

    dans la mesure ou il s'agit de SQLLite, ceci est assez indépendant de la plateforme Xamarin.

    Celà dit, pour moi, il s'agit simplement de faire un delete d'enregistrement dans une base de données.

    Donc, tu peux tout à faire faire une requete, récupérer les identifiants des enregistrements à supprimer (en te basant sur un critère significatif, date de création, ou autre)
    et ensuite, faire une simple requete SQL de suppression d'enregistrement.

    rien de bien compliqué en soit, me semble t-il ?

    Si tu as besoin de plus d'explications !!!
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    Pour ce qui est de la suppression je sais le faire, la difficulté que je rencontre est de pouvoir le faire à un moment précis.
    Pour te donner un exemple, je souhaite supprimer des enregistrement datant de plus d'un jour, et ce pendant une routine (Tout les jours, toutes les heures ou autre).

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur
    Inscrit en
    Octobre 2014
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2014
    Messages : 322
    Points : 124
    Points
    124
    Par défaut
    je ne suis pas un expert donc désolé si ma réponse ne te conviens pas!

    essayes de créer un crontab ! (taches planifiées)

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    Merci de ta réponse, sais tu où je peux me documenter sur les crons en C#? Je ne trouve pas de documentation claire.

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur
    Inscrit en
    Octobre 2014
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2014
    Messages : 322
    Points : 124
    Points
    124
    Par défaut
    malheureusement je ne trouve pas de doc sur le cron...

    essaye de voir avec les exemples!

  7. #7
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    le plus simple

    Si tu tournes sur du server ou sous Windows, tu peux créer une tache planifiée (task scheduler).

    Le principe est simple :

    Lancer un program à une heure précise toutes les X Heures / ou x jours, etc...

    Et c'est beaucoup plus simple et rapide qu'un cron table
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Pourquoi ne pas mettre ça dans un timer directement dans ton appli ? chaque intervalle de 1h :
    - tu ouvres une transaction SQL
    - tu supprimes toutes les lignes qui sont plus ancienne que la date actuelle - 1 jour
    - tu fermes ta transaction SQL

    Attention si tu fais cela pour limiter la place sache que par défaut la base de données s'étend quand elle a besoin de place mais ne diminue que si on lui demande expressément.
    Fais le test ajoute 1000 lignes; regarde la taille de ton fichier sqlite; supprime tes 1000 lignes; tu verras que la taille reste la même. Ajoute 500 lignes la taille ne bouge pas. Ajoute 500 lignes de plus la taille ne bouge toujours pas; ajoute encore 500 lignes et là tu verras que la taille augmente. C'est en fait un mécanisme d'optimisation de l'emplacement. Tant qu'elle a de la place cela lui évite de demander des zones mémoires supplémentaires; c'est donc plus rapide.

    Tout est expliqué sur le lien suivant : https://www.sqlite.org/lang_vacuum.html

  9. #9
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    Et si tu veux le faire sans Xamarin / Android, il te suffit de créer un service qui, une fois lancé par ton programme, pourras avec un timer scruter les informations
    toutes les XX minutes / heures, et faire le boulot !!!
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    Math71, je vais regarder merci de ton aide !

    theMonz, Ma base est créer par le programme et ensuite stockées sur le téléphone, comment faire une tache planifiée ?

    Lead8209, Pour les transaction l'appli doit être en marche ?
    Pour la taille de la base, tu me conseil d'utiliser un "VACCUM" pour la redimensionner ?

  11. #11
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Une transaction s'exécute depuis une connexion ouverte vers une base de données (autrement dit dans ton appli ou une autre appli / service.
    Représente te le comme un marqueur qu'on pose à un instant t.
    Tu démarres ta transaction sur ta connexion (marqueur posé)
    Tu ajoutes, tu modifies tu supprimes des lignes ou même la structure de la base : colonnes ou tables
    Tu finalises ta transaction soit en commit (pour appliquer toutes tes requêtes non échouées) soit en revert (pour tout annuler)
    Cela permet dans ton cas deux avantages :
    - lorsque la transaction est démarrée selon son niveau cela réserve, la base entière, une table. Tu es protégé d'un delete ou bien d'un insert par exemple.
    - si une commande échoue tu peux annuler toutes les requêtes non select exécutées depuis le début de la transaction.

    Pour le VACCUM je laisserais de base. Surveille ton fichier s'il grossit trop tente un VACCUM lorsque le programme ne sollicite pas la base. Tu verras si le poids diminue. Est-ce que tu as tant de données que ça ?

Discussions similaires

  1. supprimer des données une fois la date passée
    Par Bazooka dans le forum Access
    Réponses: 2
    Dernier message: 09/02/2007, 21h39
  2. supprimer des données dans plusieurs tables
    Par mnssylvain dans le forum Access
    Réponses: 4
    Dernier message: 28/01/2007, 19h06
  3. Remplacer / Supprimer des données dans un fichier txt
    Par PedroBD dans le forum Langage
    Réponses: 3
    Dernier message: 03/07/2006, 13h33
  4. [MySQL] supprimer des données dans la base
    Par Commodore dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 07/02/2006, 02h43
  5. Supprimer des données dans un xml
    Par pingoui dans le forum Format d'échange (XML, JSON...)
    Réponses: 49
    Dernier message: 12/08/2004, 16h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo