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#] Comment connaître le nombre de lignes affectées par un Select ?


Sujet :

Accès aux données

  1. #1
    Membre actif Avatar de diaboloche
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    592
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 592
    Points : 274
    Points
    274
    Par défaut [C#] Comment connaître le nombre de lignes affectées par un Select ?
    Bonjour,

    J'ai une petite question.
    Comment puis-je connaitre le nombre de ligne retournée par cette requete ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    string requete="SELECT * FROM Table";
    OleDbCommand command = new OleDbCommand(requete, connection);
    MessageBox.Show(command.ExecuteScalar().ToString());
    J'essaye de cette manière mais cela ne fonctionne pas... une exception est levée... Où me suis-je trompé ?

    Merci.

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Citation Envoyé par diaboloche
    J'essaye de cette manière mais cela ne fonctionne pas... une exception est levée ...
    Quelle exception ?

  3. #3
    Membre actif Avatar de diaboloche
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    592
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 592
    Points : 274
    Points
    274
    Par défaut
    Tout d'abord je signale que je suis en Webforms.
    Je veux executer une procédure stockée...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE PROCEDURE IDENFITICATION  (@nom char(20), @password char(20))
     
    AS 
     SELECT users FROM test_users WHERE @nom=users AND @password=password
    GO
    Et

    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
     
    //-----------------------------------------//
    			//---Vérification par procédure stockée---//
    			//---------------------------------------//
     
    			//---Définition de la procédure stockée---//
    			SqlCommand Verif = new SqlCommand("IDENFITICATION",this.sqlConnection1);			
    			Verif.CommandType=CommandType.StoredProcedure;
     
    			//---Définition des paramètres---//
    			Verif.Parameters.Add("@nom",SqlDbType.Char,20);
    			Verif.Parameters.Add("@password",SqlDbType.Char,20);
     
    			//---Attributtion des valeurs---//
    			Verif.Parameters["@nom"].Value=this.tbLogin.Text;
    			Verif.Parameters["@password"].Value=this.tbPassword.Text;
     
    			//---Execution---//
    			this.sqlConnection1.Open();
    			Verif.ExecuteScalar();
    A l'execution j'ai l'erreur suivante

    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
    40
    41
    42
    43
    44
    45
     
    Erreur du serveur dans l'application '/WebTest'.
    --------------------------------------------------------------------------------
     
    Erreur de configuration 
    Description : Une erreur s'est produite lors du traitement d'un fichier de configuration requis pour répondre à cette demande. Veuillez consulter ci-dessous les détails relatifs à l'erreur en question, puis modifier votre fichier de configuration de manière appropriée. 
     
    Message d'erreur de l'analyseur: Accès refusé : 'WebTest'.
     
    Erreur source: 
     
     
    Ligne 196 :				<add assembly="System.EnterpriseServices, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
    Ligne 197 :				<add assembly="System.Web.Mobile, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
    Ligne 198 :				<add assembly="*"/>
    Ligne 199 :			</assemblies>
    Ligne 200 :		</compilation>
     
     
    Fichier source : c:\windows\microsoft.net\framework\v1.1.4322\Config\machine.config    Ligne : 198 
     
    Suivi du chargement de l'assembly: Les informations suivantes peuvent permettre de déterminer la raison pour laquelle l'assembly 'WebTest' n'a pas pu être chargé.
     
     
    === Pre-bind state information ===
    LOG: DisplayName = WebTest
     (Partial)
    LOG: Appbase = file:///c:/inetpub/wwwroot/WebTest
    LOG: Initial PrivatePath = bin
    Calling assembly : (Unknown).
    ===
     
    LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
    LOG: Post-policy reference: WebTest
    LOG: Attempting download of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET Files/webtest/6dcfda7d/5a034847/WebTest.DLL.
    LOG: Attempting download of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/Temporary ASP.NET Files/webtest/6dcfda7d/5a034847/WebTest/WebTest.DLL.
    LOG: Attempting download of new URL file:///c:/inetpub/wwwroot/WebTest/bin/WebTest.DLL.
    LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
    LOG: Post-policy reference: WebTest, Version=1.0.2455.19292, Culture=neutral, PublicKeyToken=null
     
     
     
     
    --------------------------------------------------------------------------------
    Informations sur la version : Version Microsoft .NET Framework :1.1.4322.2032; Version ASP.NET :1.1.4322.2032
    Moi j'aimerais savoir si un résultat sera renvoyé par mon select... si il a trouvé quelque chose...

  4. #4
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    ExecuteScalar ne renvoie pas le nombre de lignes concernées par la requête. La méthode ExecuteNonQuery le fait, mais uniquement pour le requête d'écriture (insert, update et delete).

    Néanmoins, ExecuteScalar te renverra ceci
    Valeur de retour

    Première colonne de la première ligne du jeu de résultats, ou référence null si le jeu de résultats est vide.

  5. #5
    Membre actif Avatar de diaboloche
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    592
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 592
    Points : 274
    Points
    274
    Par défaut
    Merci de tes précisions... mais quelle est la méthode a adoptée alors ?

  6. #6
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Citation Envoyé par diaboloche
    Merci de tes précisions... mais quelle est la méthode a adoptée alors ?
    Ta requête ne doit retourner qu'un seul enregistrement normallement car je ne pense pas que tu puisses avoir plusieurs utilisateurs avec le même nom.

    Dans ce cas, comme je l'ai dit, avec ExecuteScalar tu récupéreras soit null (si l'utilisateur n'est pas trouvé ou que le mot de passe n'est pas bon) soit le nom de l'utilisateur.

  7. #7
    Membre actif Avatar de diaboloche
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    592
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 592
    Points : 274
    Points
    274
    Par défaut
    Ok merci c'est ok !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/01/2015, 18h26
  2. [XL-2007] Comment connaître le nombre de lignes avec une valeur ?
    Par EFFLYINGJOKER dans le forum Excel
    Réponses: 4
    Dernier message: 13/05/2011, 15h31
  3. connaître le nombre de ligne affectées dans un delete
    Par christgh dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 20/10/2008, 15h43
  4. Réponses: 2
    Dernier message: 11/08/2007, 03h51
  5. Comment connaître le nombre de lignes?
    Par Xanto dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/08/2007, 10h23

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