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 :

ajout donne dans sqlserver2005


Sujet :

Accès aux données

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Points : 9
    Points
    9
    Par défaut ajout donne dans sqlserver2005
    Bonjour,

    je suis débutante dans l'asp.net et sql server 2005 et j'ai un problème avec une méthode qui va vérifier si le client existe dans la base de donnée.

    Voici le code:

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
        private int Nb_client()
        {
            int nb = 0;
     
            try
            {
     
                String requete1 = "select count(*) into nb from st_test_table WHERE nom='" + TextNom.Text + "' AND prenom='" + TextPrenom.Text + ";";
     
                nbrec = new SqlCommand(requete1, myConnexion);
     
     
                nbrec.Connection.Open();
                nbrec.ExecuteNonQuery();
     
     
     
            }
            catch (System.Exception ex)
            {
                Console.WriteLine(ex.Message);
                LabErrorMsg.Text= " - Une erreur s'est produite - ";
     
            }
     
            return nb;
     
        }
    Le problème est que même si mon client existe, la valeur de nb reste toujours à 0.

    Quelqu'un peut m'aider ?

    merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 360
    Points : 486
    Points
    486
    Par défaut
    tu devrais utiliser ExecuteScalar() à la place de ExecuteNonQuery() pour récupérer les valeurs d'agrégats.

    ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    nbrec.Connection.Open();
    nombre=nbrec.ExecuteNonQuery();

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Points : 9
    Points
    9
    Par défaut
    J'ai essayé avec le ExecuteScalar() en faisant comme celà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
      nbrec.Connection.Open();
      nb = (int)nbrec.ExecuteScalar();
    mais mon nb reste toujours à 0.

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 70
    Points : 76
    Points
    76
    Par défaut
    A mon avis ton erreur viens dans ta requête. En gros, j'ai l'impression que tu fais un compte mais que tu ne lui crée pas un champ spécifique.

    Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String requete1 = "select count(*) AS nb from st_test_table WHERE nom='" + TextNom.Text + "' AND prenom='" + TextPrenom.Text + ";";
    Je ne sais pas si ça peut marcher.

    Bonne chance !!

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 360
    Points : 486
    Points
    486
    Par défaut
    est tu sur que ta requete est correcte ? tu l'a affichée et testée directement dans SQLserver?

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 70
    Points : 76
    Points
    76
    Par défaut
    Ouais je l'ai testée. le seul changement que j'ai fait qui est peu être plus malin pour moi est qu'au lieu de faire un compte en fonction de tous les champs, je le fais en fonction de l'id, ce qui revient au même et qui est peut-être même mieux finalement...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select count(ID) AS nb from st_test_table WHERE nom='" + TextNom.Text + "' AND prenom='" + TextPrenom.Text + ";";
    Après, plus qu'à reprendre la "nouvelle" colonne temporaire "nb" et faire le test pour savoir si le compte est > 0.


  7. #7
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Points : 9
    Points
    9
    Par défaut
    J'ai essayé ta solution keks06 mais malheureusement j'ai toujours le même problème, mon nb reste toujours à 0.

    J'ai bien testé avant la requête dans sql server et elle marche très bien, donc je ne comprend vraiment pas pourquoi une fois dans le code ça ne marche plus.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 360
    Points : 486
    Points
    486
    Par défaut
    question bête mais tu es sur qu'aucune exceptions n'est levée? du coup ca te prendrais toujours la valeur 0?

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 70
    Points : 76
    Points
    76
    Par défaut
    Dans quel langage programmes-tu ???

    VB ?? C# ?

  10. #10
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Points : 9
    Points
    9
    Par défaut
    Pour l'exception, je ne pense pas qu'il y en ai une car je n'ai pas de message d'erreur affiché.

    Pour le langage, j'utilise le c#.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 360
    Points : 486
    Points
    486
    Par défaut
    bah là je vois pas trop du coup... poste un extrait plus important de ton code peut etre que ca aidera...

  12. #12
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Points : 9
    Points
    9
    Par défaut
    Voici mon code:

    en gros, si je clique sur le bouton enregistrer de mon formulaire, j'ai le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
            if (!ExisteClient())// on vérifie que le client n'existe pas
            {
                AjoutClient();// on ajoute le client
            }
            else
            {
                LabErrorMsg.Visible = true;
            }


    je vérifie que le client n'existe pas, pour cela je vais appeler la méthode
    ExisteClient dont voici le code :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
     
     private Boolean ExisteClient()
        {
            //appel de la méthode nb_client afin de savoir si le client est présent dans la db
            nbrecord = Nb_client();
     
            if (nbrecord > 0)
            {
     
                requeteSql = "select * from st_test_table WHERE nom='" + TextNom.Text + "' or prenom='" + TextPrenom.Text + "'";
                // Création de l'objet SqlCommand
                myCommand = new SqlCommand(requeteSql, myConnexion);
                // Lecture des données
                oDataReader = myCommand.ExecuteReader();
                // Paramétrage du GridView pour afficher le client
                GridView1.DataSource = oDataReader;
                GridView1.DataBind();
                LabErrorMsg.Text=" - Le client existe déjà - ";
                GridView1.Visible = true;
                return true;
     
            }
            else
            {
                GridView1.Visible = false;
                return false;
     
                // Fermeture du DataReader et de la connexion
                if (oDataReader != null)
                    oDataReader.Close();
     
                if (myConnexion != null)
                    myConnexion.Close();
     
     
            }
     
        }
    Cette méthode va appeler nb_client pour vérifier que le client n'existe pas

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     
        private int Nb_client()
        {
            nb = 0;
     
     
            try
            {
     
                String requete1 = "select Count(nom) AS nb into nb from st_test_table WHERE nom='" + TextNom.Text + "' AND prenom='" + TextPrenom.Text + ";";
                nbrec = new SqlCommand(requete1, myConnexion);
                nbrec.Connection.Open();
                nb = (int)nbrec.ExecuteScalar();
                Response.Write(" - contenu de nb: " + nb);
     
     
            }
            catch (System.Exception ex)
            {
                Console.WriteLine(ex.Message);
                LabErrorMsg.Text= " - Une erreur s'est produite - ";
     
            }
     
            return nb;
     
        }

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 360
    Points : 486
    Points
    486
    Par défaut
    "select Count(nom) AS nb into nb from st_test_table WHERE nom='" + TextNom.Text + "' AND prenom='" + TextPrenom.Text + ";";
    pourquoi tu utilises un INTO ??

  14. #14
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Points : 9
    Points
    9
    Par défaut
    En fait, c'est une erreur,lol, je voulais remplacer le AS nb par INTO nb pour essayer de mettre les données dans nb, mais ça n'a rien changer donc je l'ai supprimé.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 360
    Points : 486
    Points
    486
    Par défaut
    et myConnexion tu es sur qu'il a la bonne valeur?

  16. #16
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Points : 9
    Points
    9
    Par défaut
    oui, la connexion à la base de donnée se fait correctement car j'arrive à ajouter des clients

  17. #17
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Petites questions :

    - Lorsque tu execute ta requete sous SQL, te renvoi -t-elle des lignes pour le même nom et le même prenom utilisé ?
    - As-tu vérifier que tu avais des valeurs dans les zones txtNom.text et txtPrenom.Text ?

    A priori ta requete fonctionne, sauf qu'elle te dit que tu n'as pas de réponse correspondant aux critères que tu lui donnes (nom, prenom)

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 360
    Points : 486
    Points
    486
    Par défaut
    ajoute un point d'arret a ce niveau myCommand = new SqlCommand(requeteSql, myConnexion); pour voir la valeur de requeteSql

  19. #19
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Points : 9
    Points
    9
    Par défaut
    J'ai tester ma requête sous sql server et elle me retourne bien le nombre de ligne qu'il faut.

    J'ai aussi tester la valeur de mes champs texte nom et prénom et ils affichent bien les données entrées. Et le client est présent dans la base de donnée mais comme mon nb reste toujours à 0, ils n'arrêtent pas de le rajouter. J'ai donc le même client en plusieurs exemplaires.

  20. #20
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Points : 9
    Points
    9
    Par défaut
    heu j'ai essayé d'ajouter un point d'arrêt, mais visual studio ne me le permet pas , il me dit qu'un point d'arrêt ne peut pas être insérer à cet endroit

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Ajout données dans Zone de liste modifiable
    Par emilie31 dans le forum Access
    Réponses: 2
    Dernier message: 08/01/2007, 16h18
  2. [MySQL] problème ajout donnée dans BDD via php
    Par Skeud007 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 29/05/2006, 23h41
  3. ajout donnée dans formulaire
    Par gregius dans le forum Access
    Réponses: 2
    Dernier message: 09/01/2006, 11h12
  4. Réponses: 2
    Dernier message: 04/12/2005, 20h07
  5. Ajouter données dans un champ (concat)
    Par TNorth dans le forum Requêtes
    Réponses: 6
    Dernier message: 09/05/2005, 21h38

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