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 :

des % % dans une requête paramètrée


Sujet :

ASP.NET

  1. #1
    Membre régulier Avatar de paradeofphp
    Inscrit en
    Décembre 2005
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 313
    Points : 94
    Points
    94
    Par défaut des % % dans une requête paramètrée
    Bonjour tout le monde,
    J'ai une classe en c# gérant l'accès à une BDD Oracle.
    Dans cette classe, j'ai développé une fonctin me permettant de construire une requête avec des paramètres. les paramètres sont stockées dans une table de hachage. voici mon 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
    		protected override string SelLikeQuery(string query, Hashtable hash, string groupBy)
    		{
    			string where = " WHERE ";
    			IDictionaryEnumerator en = hash.GetEnumerator();
    			int i = 0;
    			while (en.MoveNext())
    			{
    				where = where + "" + en.Key + " LIKE ':" + en.Value + "' ";
    				if (i++ < hash.Count - 1 ) where = where + " AND ";
    			}
     
    			query = query + where + " " + groupBy + "";
    			return query;
    		}
    J'ai besoin de rajouter des % % entre mes paramètres.

    j'ai remplacé cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where = where + "" + en.Key + " LIKE ':" + en.Value + "' ";
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where = where + "" + en.Key + " LIKE '%:" + en.Value + "%' ";
    L'execution de la requête dans mon programme, me retourne l'erreur suivante: ORA-01036: numéro/nom de variable interdit

    Je sais très bien que l'erreur vient de la ligne que j'ai modifié.
    Je vous demande s'il vous plâit de m'aider à corriger cette ligne pour que ca marche. Merci

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Faut pas mettre le "%" après les ":" ?

  3. #3
    Membre régulier Avatar de paradeofphp
    Inscrit en
    Décembre 2005
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 313
    Points : 94
    Points
    94
    Par défaut
    que dois-je faire alors ???
    peux-tu me corriger cette ligne ?

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut
    Citation Envoyé par paradeofphp Voir le message
    ...
    j'ai remplacé cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where = where + "" + en.Key + " LIKE ':" + en.Value + "' ";
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where = where + "" + en.Key + " LIKE '%:" + en.Value + "%' ";
    ...
    tu as essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where = where + "" + en.Key + " LIKE '%" + en.Value + "%' ";

  5. #5
    Membre actif
    Inscrit en
    Janvier 2005
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 218
    Points : 247
    Points
    247
    Par défaut
    Citation Envoyé par paradeofphp Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where = where + "" + en.Key + " LIKE ':" + en.Value + "' ";
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where = where + "" + en.Key + " LIKE '%:" + en.Value + "%' ";
    Il faut pas mettre %: mais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where = where + "" + en.Key + " LIKE '%" + en.Value + "%' ";

  6. #6
    Membre régulier Avatar de paradeofphp
    Inscrit en
    Décembre 2005
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 313
    Points : 94
    Points
    94
    Par défaut
    ta solution cybermaxs ne peut pas marcher puisque j'utilise les paramètres, je suis obligé de garder les :

  7. #7
    Membre régulier Avatar de paradeofphp
    Inscrit en
    Décembre 2005
    Messages
    313
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 313
    Points : 94
    Points
    94
    Par défaut
    voici a quoi correspond ma requête construite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SELECT T.*, P.STOCKAGE_PHOTO  FROM PERSONNES P INNER JOIN  (SELECT MAX(CS.DATE_ATTRIBUTION) AS Expr1, SP.NUMSERIE, PS.NOM, PS.PRENOM, PS.Dte_Naissance, PR.ID_PORTEUR, PR.ID_CARTE, PS.PHOTO, PR.ID_PERSONNE , CS.STATUT, CS.DATE_ATTRIBUTION, CS.DATE_OPPOSITION, CS.DATE_DELIVRANCE,REFERENCIEL.NOM_CONNECTEUR  FROM PORTEUR PR INNER JOIN PERSONNES PS ON PR.ID_PERSONNE = PS.ID_PERSONNE INNER JOIN  REFERENCIEL ON PS.ID_REFERENCIEL = REFERENCIEL.ID_REFERENCIEL INNER JOIN  SUPPORTE SP ON PR.ID_CARTE = SP.ID_CARTE INNER JOIN  CARTES CS ON PR.ID_CARTE = CS.ID_CARTE AND SP.ID_CARTE = CS.ID_CARTE  WHERE LOWER(substr(PS.ID_PERSONNE,0,length(PS.ID_PERSONNE)-12)) LIKE '%:idPersonne%'   AND STATUT in ('ACTIF','OPPOSITION') GROUP BY PR.ID_PERSONNE, SP.NUMSERIE, PS.NOM, PS.PRENOM, PS.Dte_Naissance, PR.ID_PORTEUR, PR.ID_CARTE, PS.PHOTO, CS.STATUT, CS.DATE_ATTRIBUTION, CS.DATE_OPPOSITION, CS.DATE_DELIVRANCE, REFERENCIEL.NOM_CONNECTEUR) T ON   P.ID_PERSONNE = T.ID_PERSONNE
    Regarder ceci :
    LIKE '%:idPersonne%'
    c'est la ou ca plante.
    Je sais pas si ca vous donne une idée ?

Discussions similaires

  1. Entrer la valeur d'un paramètre dans une requête paramétrée
    Par emeric2502 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 22/11/2014, 20h22
  2. Caractère jocker dans une requête paramétrée
    Par jncoffy dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 25/02/2009, 15h27
  3. Variable "date" dans une requête paramétrée
    Par amtdev dans le forum Bases de données
    Réponses: 10
    Dernier message: 25/01/2008, 19h42
  4. des % % dans une requête paramètrée
    Par paradeofphp dans le forum SQL
    Réponses: 6
    Dernier message: 16/11/2007, 11h03
  5. Réponses: 1
    Dernier message: 21/03/2006, 14h29

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