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

SQLite Discussion :

DELETE ne fonctionne pas


Sujet :

SQLite

  1. #1
    Invité
    Invité(e)
    Par défaut DELETE ne fonctionne pas
    Bonsoir,
    Je suis sous Java et j'ai une requête à effectuer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CLEAR = c.prepareStatement("DELETE FROM bridge_chat WHERE strftime('%s', date) < ?");
    Qui est censée supprimer toutes les lignes de ma table bridge_chat pour lesquelles la valeur de strftime('%s', date), c'est à dire le nombre de seconde timestamp de la valeur date (c'est une colonne NOT NULL de ma table), est inférieur à celle que je vais lui passer en paramètre.

    Voila la fonction dans ma classe qui se charge d'exécuter la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    public void clear(long from) throws SQLException {
    		synchronized (CLEAR) {
    			//DEBUG
    			PreparedStatement ps = CLEAR.getConnection().prepareStatement("SELECT strftime('%s', date) FROM bridge_chat");
    			ResultSet r = ps.executeQuery();
    			while(r.next()) {
    				long timestampProvenantDeLaBDD = r.getLong(1);
    				System.out.println(timestampProvenantDeLaBDD + " < " + from + " : " + (timestampProvenantDeLaBDD<from));
    			}
    			r.close();
    			ps.close();
    			//FIN DEBUG
    			CLEAR.setLong(1, from);
    			CLEAR.executeUpdate();
    		}
    	}
    Et voila le log qu'elle me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    1394477395 < 1394490850 : true
    1394485995 < 1394490850 : true
    1394486372 < 1394490850 : true
    1394486519 < 1394490850 : true
    1394486700 < 1394490850 : true
    1394486976 < 1394490850 : true
    1394487425 < 1394490850 : true
    Bien que la condition soit vrai pour toutes les lignes de ma table, aucune ligne n'est supprimée.
    Je sèche la dessus ...
    Sauriez-vous ce qui bloque ? Je suis en SQLite 3.

    Merci d'avance pour le temps que vous accorderez à mon problème.

    EDIT :
    J'ai réussis a trouver la solution a mon problème, il faut que je transforme ma requête en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "DELETE FROM bridge_chat WHERE strftime('%s', date)+0 < ?"
    Mais je ne comprends pas vraiment pourquoi :/ Quelqu'un a une idée ?
    Dernière modification par Invité ; 11/03/2014 à 00h07.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Chef de projets retraité
    Inscrit en
    Juillet 2011
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Chef de projets retraité
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 432
    Points : 1 128
    Points
    1 128
    Par défaut
    Bonjour,

    Bon, j'ai fait quelques tests.

    Soit une base avec des champs non typés (comme ça SQLITE les traite selon sa méthode)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE TABLE [testdate] ([ch1]  NULL,
    [ch2]  NULL)
    Un insert bien placé;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    insert into testdate values
     (strftime('%s', '2014-10-10'),
      strftime('%s', '2014-10-10') + 0)
    Sqlite considère le premier champ comme du texte et le second comme un entier ce qui explique à coup sûr le comportement

    Cordialement

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ah d'accord, c'est bon a savoir.

    Merci beaucoup

    Bonne soirée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 10/08/2013, 15h17
  2. [Lazarus] Ma requête SQL DELETE ne fonctionne pas
    Par ulysse_31 dans le forum Lazarus
    Réponses: 24
    Dernier message: 17/03/2013, 20h21
  3. DELET Ne fonctionne Pas
    Par tun86 dans le forum JDBC
    Réponses: 2
    Dernier message: 26/04/2011, 23h03
  4. Ma requete DELETE ne fonctionne pas
    Par micniv dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 11/04/2008, 13h08
  5. Delete ne fonctionne pas avec mon gridview
    Par NicoNGRI dans le forum ASP.NET
    Réponses: 2
    Dernier message: 26/10/2006, 08h52

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