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

Accès aux données Discussion :

[C#][MSSQL] Comparaison de date


Sujet :

Accès aux données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 61
    Par défaut [C#][MSSQL] Comparaison de date
    Je ne comprends pas ce qui colle pas dans mon code, il s'execute normalement mais ne fais pas ce que je veux (il fait rien!!)

    En gros, je souhaite mettre le champs acquit à 0 sur les lignes où j'ai le user que je veux, la date de debut et de fin...


    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
    17
    18
    19
     
    string myTableQuery =
     "UPDATE logs 
    SET acquit='0' 
    FROM logs 
    WHERE 
          user='" +user+ "' 
          AND DATEDIFF(second,debut,'" +deb+ "')=0 
          AND DATEDIFF(second,fin,'" +fin+ "')=0";
     
     
    SqlCommand myCommand = new SqlCommand(myTableQuery);
    myCommand.Connection = myConnection;
    try
    	{
    	myCommand.ExecuteNonQuery();
    	}
    catch (Exception ex) { Console.WriteLine("Erreur: " + ex.Message); }
    return;
    Je pense qu'il y a certainement un problème sur le DATEDIFF que je n'avais auparavent jamais utilisé.

    d'avance pour votre aide

  2. #2
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    Enlève le "FROM logs" au milieu de ta requête.

    De plus, évite les + dans ta requête SQL
    Passe plutôt par un string.Format par exemple.

    Le SQL injection est un gros problème de sécurité.

  3. #3
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 61
    Par défaut Bien essayé mais ça ne fonctionne toujours pas
    Je vais me desesperer

    Pour la securite, je m'y met de suite

  4. #4
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    Peux-tu donner les définitions de debut et fin?
    Ca me parait bizarre la façon dont tu fais tes datediff

  5. #5
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 61
    Par défaut
    J'ai utilisé cette requête pour créer ma table:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CREATE TABLE logs (id SMALLINT NOT NULL,nbSucces INTEGER,nbEchec INTEGER,debut DATETIME,fin DATETIME, acquit SMALLINT);
    Ici, c'est le code complet de la fonction (prototype)...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public void UpdateCredit(SqlConnection myConnection,string user,DateTime deb,DateTime fin)
    {
    string myTableQuery = "UPDATE logs SET acquit='0' WHERE user='" +user+ "' AND (DATEDIFF(second,debut,'" +deb+ "')=0) AND (DATEDIFF(second,fin,'" +fin+ "')=0)";
    SqlCommand myCommand = new SqlCommand(myTableQuery);
    myCommand.Connection = myConnection;
     
    try
    	{
    	myCommand.ExecuteNonQuery();
    	}
    catch (Exception ex) { Console.WriteLine("Erreur: " + ex.Message); }
    return;
    }
    J'espère que je m'exprime correctement
    Merci encore

  6. #6
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    Tu n'as pas de user dans ta table. Est-ce normal?

    Tu es sur que tu as des lignes qui doivent être mise à 0?
    Quelles sont les valeurs exactes de deb et fin? Y-a-til les heures/minutes/secondes par exemples?
    As-tu les mêmes données en base?

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

Discussions similaires

  1. comparaison de dates javascript
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/07/2005, 08h45
  2. comparaison de dates
    Par pmithrandir dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/06/2005, 16h12
  3. comparaison de date
    Par nickoshiba dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 15/03/2005, 15h48
  4. Comparaison de dates
    Par Tapioca dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/06/2004, 15h55
  5. Problème de comparaison de dates
    Par MiJack dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/03/2004, 21h43

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