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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    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
    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
    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";
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Membre éclairé Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    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
    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
    Par défaut
    Pour ça, il faudrait que tu postes le code exact.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Membre éclairé Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    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
    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
    Par défaut
    De quel type est le champ CLETACHEMERE ?
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

+ 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