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][C#/Oracle] Comment utiliser une requête paramètrée ?


Sujet :

Accès aux données

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 306
    Points : 194
    Points
    194
    Par défaut [ADO.Net][C#/Oracle] Comment utiliser une requête paramètrée ?
    Bonjour,
    Voilà j'ai un petit soucis.
    J'utilise les paramètres de l'objet OracleCommand pour exécuter une requête Oracle. Le problème est que lors de l'exécution j'ai l'erreur suivante 'ORA-01036: numéro/nom de variable illégal' :

    // Requête
    string str_query = "select nom, prenom from personne where id = ? ";

    // Ouverture d'un objet Command
    OracleCommand myCommand = new OracleCommand(str_query,conn);

    // Ajout du paramètre id
    OracleParameter parametre_id = new OracleParameter("id", System.Data.OracleClient.OracleType.Number);
    myCommand.Parameters.Add(parametre_id);
    parametre_id.Value = 1390873;

    // Ouverture d'un datareader
    OracleDataReader myReader = myCommand.ExecuteReader();

    Le champ id de la table personne est de type number(15,5).

    Vous avez une idée ?

    Merci d'avance.

  2. #2
    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
    commence peut être par inverser ces lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    myCommand.Parameters.Add(parametre_id); 
    parametre_id.Value = 1390873;
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    parametre_id.Value = 1390873;
    myCommand.Parameters.Add(parametre_id);
    sinon peux être que tu devrais utiliser un autre constructeur pour definir le type
    Constructeur OracleParameter (String, OracleType, Int32)
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 306
    Points : 194
    Points
    194
    Par défaut
    Merci pour ta réponse.
    Inverser les deux lignes ne change rien.
    De même pour le constructeur.
    Il n'a pas l'air de vouloir associer ? par la variable....

  4. #4
    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
    ok et comme çà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    string str_query = "SELECT nom, prenom FROM personne WHERE
     id = @monid ";
    OracleCommand myCommand = new OracleCommand(str_query,conn); 
    myCommand.Parameters.Add(new OracleParameter("@monid",
     System.Data.OracleClient.OracleType.Number)); 
    myCommand.Parameters("@monid").Value = 1390873;
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 306
    Points : 194
    Points
    194
    Par défaut
    Encore merci pour ta réponse.
    J'ai trouvé la solution gràce à toi!
    Elors en fait c'est dans la définition du paramètre dans la requete : ce n'est pas un '?' ou un '@id' mais un ':id'.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string str_query = "SELECT nom, prenom FROM personne WHERE id = :monid "
    Merci encore!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/04/2010, 08h56
  2. Réponses: 3
    Dernier message: 27/01/2010, 14h29
  3. [ADO.Net][2.0] Comment utiliser une source de données Firebird ?
    Par neilbgr dans le forum Accès aux données
    Réponses: 2
    Dernier message: 24/05/2006, 08h05
  4. [ADO.Net][C#/Oracle]Comment gérer OracleType.VarChar?
    Par el_poitevin dans le forum Accès aux données
    Réponses: 5
    Dernier message: 30/03/2006, 13h08
  5. [ADO.Net][C#/Mysql] Comment exécuter une requête paramétrée?
    Par wremacle dans le forum Accès aux données
    Réponses: 6
    Dernier message: 07/02/2006, 16h55

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