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 :

[ADO.NET Oracle] Requête paramétrée en C# qui refuse de s'exécuter


Sujet :

Accès aux données

  1. #1
    Membre habitué Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 218
    Points : 128
    Points
    128
    Par défaut [ADO.NET Oracle] Requête paramétrée en C# qui refuse de s'exécuter
    Bonjour à toutes et à tous !!!
    Dans un module C# que je développe, j'ai besoin de faire plusieurs accés à une base de données Oracle 10g via ADO.NET.
    Ces requêtes ont souvent besoin d'être paramétrées, toutes fonctionnent impeccable sauf une :
    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
    public Boolean executerRequeteTaches(Double tournee)
    {
      OracleCommand requete = new OracleCommand();
      OracleDataReader lecteurTaches = null;
    
      //Paramétrage de la requête
      requete.CommandText = ("
        select
              SUIVI.TIMEDEBUTSUV, TRONC.LIB1TRONC, TRONC.CLETRONC, TACHE.CLETACHE
              from TACHE
                    join SUIVI on SUIVI.CLETACHE = TACHE.CLETACHE 
                    join TRONC on TACHE.CLETRONC = TRONC.CLETRONC
              where TACHE.CLETACHEMERE = :tournee 
              and TACHE.TYPECOLLECTETCH != -1
      ");
      paramTournee.Value = tournee;
      requete.Connection = OConnexion; //La connexion est défini avant dans le programme
    
      //Exécution de la requête
      lecteurTaches = requete.ExecuteReader();
    }
    Je sais pas si j'ai mis tout le code, c'est juste pour que voyez la structure car je suis sur que c'est le paramétrage de la requête qui ne fonctionne pas : quand dans la requêtre au lieu de :tournee, je met 2 par exemple, tout fonctionne correctement ! Si je laisse le paramètre, la très fameuse exception ORA-01036: illegal variable name/number est levée !
    Est que vous avez une idée du pourquoi du comment ca ne fonctionne pas ?
    Et est que vous avez un moyen d'y remédier !
    Merci beaucoup !!! @+
    Antoine

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Est ce que tu as bien affecté la propriété ParameterName ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    paramTournee.ParameterName = "tournee";

  3. #3
    Membre habitué Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 218
    Points : 128
    Points
    128
    Par défaut
    Merci de ta réponse SaumonAgile !
    Je n'ai pas fais ça pour mes autres requêtes, ca marchais très bien ! J'ai tout de même essayer mais rien n'y fais... toujours la même erreur !
    Merci quand même !
    Another suggestions ?
    Antoine

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Pour ça, il faudrait que tu postes le code exact.

  5. #5
    Membre habitué Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 218
    Points : 128
    Points
    128
    Par défaut
    Tu as tout le code la !!!
    J'en remet un peu au cas ou mais il y as tous les éléments !
    Ca, Ca marche :
    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
    public void executerRequeteRecuperationPoints(Int16 idVehicule)
    {
      //Connection
      OracleConnection OConnexion = new OracleConnection();
      OConnexion.ConnectionString = ("Data Source=monServeur;User ID=monUtilisateur;Password=monMotDePasse;");
      OConnexion.Open();
    
      //Requete
      OracleCommand requeteGPS = new OracleCommand();
      //Déclaration du paramètre de la requête
      OracleParameter paramVehicule = requeteGPS.Parameters.Add(new OracleParameter(":vehicule", OracleDbType.Int16));
      //Lecteur de données
      OracleDataReader lecteurGPS = null;
    
      //Paramétrage de la requête
      requeteGPS.CommandText = ("
      select 
            NUMTRAJ, TYPCOL, DATETIME, NBSAT, LAT, LON 
            from POINTGPS 
            where IDVHC = :vehicule
      ");
      paramVehicule.Value = idVehicule;
    
      requeteGPS.Connection = OConnexion;
    
      //Exécution de la requête
      lecteurGPS = requeteGPS.ExecuteReader();
    }



    Ca, Ca marche 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
    29
    30
    31
    32
    public void executerRequeteTaches(Double tournee)
    {
      //Connection
      OracleConnection OConnexion = new OracleConnection();
      OConnexion.ConnectionString = ("Data Source=monServeur;User ID=monUtilisateur;Password=monMotDePasse;");
      OConnexion.Open();
    
      //Requete
      OracleCommand requeteTaches = new OracleCommand();
      //Déclaration du paramètre de la requête
      OracleParameter paramTournee = requeteTaches.Parameters.Add(new OracleParameter(":tournee", OracleDbType.Double));
      //Lecteur de données
      OracleDataReader lecteurTaches = null;
    
      //Paramétrage de la requête
      requeteTaches.CommandText = ("
        select
              SUIVI.TIMEDEBUTSUV, TRONC.LIB1TRONC, TRONC.CLETRONC, TACHE.CLETACHE
              from TACHE
                    join SUIVI on SUIVI.CLETACHE = TACHE.CLETACHE 
                    join TRONC on TACHE.CLETRONC = TRONC.CLETRONC
              where TACHE.CLETACHEMERE = :tournee 
              and TACHE.TYPECOLLECTETCH != -1
      ");
      paramTournee.Value = tournee;
    
      requeteTaches.Connection = OConnexion;
    
      //Exécution de la requête
      lecteurTaches = requeteTaches.ExecuteReader(); //La ca plante
    }
    Le code il se met pas en couleurs tout seul sur ce forum alors je me susi tout taper pour que ce soit plus facile a lire !!! Le code est bon j'en suis sûr car il marche avec toute mes requête sauf celle-la !
    Est que ce serait sa structure qui ne vas pas ou qui ne pourrais pas accepter de paramètres ???
    Merci++
    Antoine

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    De quel type est le champ CLETACHEMERE ?

  7. #7
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    En SQL, je crois le prédicat 'différent' s'écrit '<>' et pas '!='.

    Il faut que tu écrives : TACHE.TYPECOLLECTETCH <> -1

  8. #8
    Membre habitué Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 218
    Points : 128
    Points
    128
    Par défaut
    Non ca peut s'écrire '!=' aussi, c'est au choix !
    Mais c'est bon j'ai réussi à faire fonctionner l'application, c'était ma table SUIVI qui n'était pas bonne, j'ai remis tout ca en ordre !
    Merci beaucoup SaumonAgile !!!
    @++
    Antoine

  9. #9
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    De rien, et juste pour savoir, qu'est ce qui n'allait pas dans la table ?
    Et n'oublie pas de marquer le post en 'résolu' stp.

  10. #10
    Membre habitué Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 218
    Points : 128
    Points
    128
    Par défaut
    En fait le champ SUIVI.CLETACHE était de type VARCHAR alors que TACHE.CLETACHE était de type NUMBER. Donc SUIVI.CLETACHE avait les même numéro mais pas dans le même type du coup il me jettait à la jointure. Je m'en suis rendu compte en l'exécutant sous SQLPLUS. Et en fait quand j'ai remplacer :tournee par 2, ca marchais pas non plus, j'ai du bugger parce que j'ai refait le test pour voir !
    Merci et @+
    Antoine

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/05/2009, 10h49
  2. Batch (.bat) qui refuse de s'exécuter via le "Scheduler"
    Par camboui dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 28/07/2006, 18h26
  3. Réponses: 3
    Dernier message: 02/05/2006, 13h19
  4. [ADO.Net][C#/Oracle] Comment utiliser une requête paramètrée ?
    Par kaboume dans le forum Accès aux données
    Réponses: 4
    Dernier message: 05/07/2005, 14h50
  5. [VB.NET] [ADO.NET] Requête paramétrée
    Par DotNET74 dans le forum Accès aux données
    Réponses: 2
    Dernier message: 11/03/2005, 08h39

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