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

ASP.NET Discussion :

Savoir si une entrée est présente dans la base de donnée


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 145
    Points : 77
    Points
    77
    Par défaut Savoir si une entrée est présente dans la base de donnée
    Bonjour.
    Je souhaite savoir si une entrée est présente dans ma table.
    Grosso modo, mon problème est que j'ai 2 tables différentes contenant 2 types d'utilisateurs. En ayant l'identifiant d'un d'eux, je veux savoir dans quel table il est.

    Voila ce que j'ai pour le moment:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    con = new SqlConnection(this.connectionString);
    string command = "IF EXISTS (SELECT * FROM Students WHERE UserId = '" + UserId + "') SELECT 1 ELSE SELECT 0";
    SqlCommand dataCommand = new SqlCommand(command, con);
    dataCommand.Connection.Open();
    //int i = dataCommand.ExecuteNonQuery(); renvoie nombre d'entrée modifié.
    Comment je fais pour avoir le résultat de mon SELECT (c'est à dire 1 si l'utilisateur est présent 0 sinon)? En gros je vais executer la requête sur mes tables et comme ça après, je saurais dans laquelle l'utilisateur se situe...

  2. #2
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    A mon avis c'est avec un count() que tu devra faire cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count(*) FROM Students WHERE UserId = '+  UserId + '
    si la requête te ramène un résultat > 0 c'est que tu as ton utilisateur.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Points : 1 502
    Points
    1 502
    Par défaut
    Salut,

    Le méthode la plus simple est de faire un count() avec une requète de type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select count(*) from FROM Students WHERE UserId = 4
    A noter que c'est une scalar query :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    object res = dataCommand.ExecuteScalar();

  4. #4
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Citation Envoyé par Golgotha Voir le message
    Bonjour,

    A mon avis c'est avec un count() que tu devra faire cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count(*) FROM Students WHERE UserId = '+  UserId + '
    si la requête te ramène un résultat > 0 c'est que tu as ton utilisateur.
    Bien que cela reste juste, il vaut mieux toujours prendre l'habitude de ne jamais faire de concaténation mais de passer par des requêtes paramétrées (même si ce n'est que pour un exemple).

  5. #5
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 106
    Points
    3 106
    Par défaut
    Bien dit
    Je vois que nous sommes au moins deux dans l'APRP (Association de Promotion des Requêtes Paramétrées).

    Je sors

  6. #6
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    PitMaverick78, calagan99,

    ça serais peut etre bien de la mettre la requête paramétré..

    Je ne connais pas bien cette technos donc ce n'est peut être pas parfait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SqlParameter paramID = new SqlParameter("@id", SqlDbType.Int);
     
    paramID.Value = 10;
     
    String sql = string.Format("SELECT count(*) FROM Students WHERE UserId = {0}",paramID.ParameterName);
     
    SqlCommand cmd = new SqlCommand(sql.ToString(), conn);
     
    cmd.Parameters.Add(paramID);
     
    conn.Open();
     
    cmd.ExecuteScalar();

  7. #7
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 933
    Points
    14 933
    Par défaut
    Citation Envoyé par Golgotha Voir le message
    PitMaverick78, calagan99,

    ça serais peut etre bien de la mettre la requête paramétré..
    Le super tuto de Webman sur le sujet .

  8. #8
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 106
    Points
    3 106
    Par défaut
    Citation Envoyé par Golgotha Voir le message
    PitMaverick78, calagan99,

    ça serais peut etre bien de la mettre la requête paramétré..

    Je ne connais pas bien cette technos donc ce n'est peut être pas parfait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SqlParameter paramID = new SqlParameter("@id", SqlDbType.Int);
     
    paramID.Value = 10;
     
    String sql = string.Format("SELECT count(*) FROM Students WHERE UserId = {0}",paramID.ParameterName);
     
    SqlCommand cmd = new SqlCommand(sql, conn);
     
    cmd.Parameters.Add(paramID);
     
    conn.Open();
     
    cmd.ExecuteScalar();
    Cette méthode est toujours sensible à l'injection SQL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SqlParameter paramID = new SqlParameter("@id", SqlDbType.Int);
     
    paramID.Value = 10;
     
    String sql = "SELECT count(*) FROM Students WHERE UserId = @id";
     
    SqlCommand cmd = new SqlCommand(sql.ToString(), conn);
     
    cmd.Parameters.Add(paramID);
     
    conn.Open();
     
    cmd.ExecuteScalar();

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

Discussions similaires

  1. [Débutant] Savoir si un champs est présent dans une structure
    Par bibou1234 dans le forum MATLAB
    Réponses: 1
    Dernier message: 25/10/2011, 10h49
  2. Réponses: 11
    Dernier message: 16/12/2007, 16h33
  3. Réponses: 2
    Dernier message: 13/08/2006, 23h56
  4. [VBA-E] Savoir si une cellule est contenue dans une plage
    Par psych0o0 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/05/2006, 14h12
  5. [Liste] Savoir si un élément est présent dans une liste
    Par Wookai dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 02/05/2005, 20h44

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