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

NHibernate Discussion :

[NHibernate] Pourquoi mon CreateQuery échoue en SqlException ?


Sujet :

NHibernate

  1. #1
    Membre habitué Avatar de nikalkal
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    231
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 231
    Points : 166
    Points
    166
    Par défaut [NHibernate] Pourquoi mon CreateQuery échoue en SqlException ?
    Bonjour, connaissant Hibernate pour J2EE, je me lance avec NHibernate dans un projet asp.net et j'ais un problème avec une requête.

    Tout ce que je veux faire c'est récupérer une liste d'objet (User) qui correspond à ceux en base ayant le login et le mot de passe pareil que ceux issus d'un formulaire. OULALA pas terrible cette phrase

    Voila: j'ais deux chaines de caratère dans deux variables: login et password

    Si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    IQuery theQuery = session.CreateQuery("from User u where u.Login
     = :login and u.Password = :password");
    theQuery.SetString("login", login);
    theQuery.SetString("password", password);
    IList theList = theQuery.List();
    j'obtiens l'erreur :
    System.Data.SqlClient.SqlException: Les types de données text, ntext et image ne peuvent pas être comparés ou classés, sauf lors de l'utilisation de l'opérateur LIKE ou IS NULL. Les types de données text, ntext et image ne peuvent pas être comparés ou classés, sauf lors de l'utilisation de l'opérateur LIKE ou IS NULL.
    et si je fais une requête comme je la fais dans un projet J2EE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    IQuery theQuery = session.CreateQuery("from User where use_login = '" +
     login + "' and use_password = '" + password + "'");
    IList theList = theQuery.List();
    j'obtiens la même erreur.

    Est-ce que quelqu'un peut m'aider parcque ça fais un bon moment que je tourne ça dans tous les sens et j'arrive pas à comprendre.

    Merci d'avance @+
    -> L’amour est à la portée de tous, mais l’amitié est l’épreuve du cœur
    -> La nature nous a donné deux oreilles et seulement une langue afin de pouvoir écouter d'avantage et parler moins
    -> Trois sortes de gens disent la vérité : les sots, les enfants et les ivrognes




  2. #2
    Membre habitué Avatar de nikalkal
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    231
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 231
    Points : 166
    Points
    166
    Par défaut
    Ok donc en fait il faut utiliser la clause LIKE, il n'aime pas le = et je ne comprends pas trop pourquoi mais bon...

    Ce qui nous donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    IList theList = session.CreateQuery("FROM User WHERE use_login LIKE '" +
     login + "' and use_password LIKE '" + password + "'").List();
    Voila merci à moi même @+
    -> L’amour est à la portée de tous, mais l’amitié est l’épreuve du cœur
    -> La nature nous a donné deux oreilles et seulement une langue afin de pouvoir écouter d'avantage et parler moins
    -> Trois sortes de gens disent la vérité : les sots, les enfants et les ivrognes




  3. #3
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par nikalkal
    Ok donc en fait il faut utiliser la clause LIKE, il n'aime pas le = et je ne comprends pas trop pourquoi mais bon...
    "=" s'applique de préférence à des numériques; LIKE est privilégié pour des comparaisons de chaines de caractères
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  4. #4
    Membre habitué Avatar de nikalkal
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    231
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 231
    Points : 166
    Points
    166
    Par défaut
    Ok merci pour cette précision mais alors c'est bizarre qu'en J2EE ça marche..
    -> L’amour est à la portée de tous, mais l’amitié est l’épreuve du cœur
    -> La nature nous a donné deux oreilles et seulement une langue afin de pouvoir écouter d'avantage et parler moins
    -> Trois sortes de gens disent la vérité : les sots, les enfants et les ivrognes




  5. #5
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par nikalkal
    Ok merci pour cette précision mais alors c'est bizarre qu'en J2EE ça marche..
    oui peut être que J2EE gère celà mais ma réponse était plutôt sur le plan SQL proprement dit
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/12/2006, 17h27
  2. [VS 2005 TS] Pourquoi mon installation échoue ?
    Par abelman dans le forum Visual Studio Team System
    Réponses: 3
    Dernier message: 08/07/2006, 15h41
  3. [VBA] Pourquoi mon jeu d'enregistrement est vide ?
    Par gyzmo5 dans le forum Access
    Réponses: 2
    Dernier message: 09/02/2006, 14h15
  4. pourquoi mon quickreport n'affiche rien ?
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 8
    Dernier message: 31/07/2005, 00h59

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