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 :

L'élément OracleParameter est déjà contenu dans un autre OracleParameterCollection.


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 kodo
    Profil pro
    Chef de projet technique
    Inscrit en
    Mars 2006
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Chef de projet technique

    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Par défaut L'élément OracleParameter est déjà contenu dans un autre OracleParameterCollection.
    Bonjour tout le monde.
    L'erreur suivante :
    [ArgumentException: L'élément OracleParameter est déjà contenu dans un autre OracleParameterCollection.]
    System.Data.OracleClient.OracleParameterCollection.Validate(Int32 index, Object value) +271370
    System.Data.OracleClient.OracleParameterCollection.Add(Object value) +30
    se produit lorsque j'appelle deux fois, une méthode qui permet d'exécuter une procédure stocké et retourner un résultat.
    Les parametres d'entree de cette methode sont :
    String sp : le nom de la procedure stockee à executer
    ListDictionary Parameters : liste cles valeurs
    key : objet OracleParameter
    value : valeur

    Code c# : 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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    public static ObjectCollectionCache LoadFromOracleReader(String sp, ListDictionary Parameters)
            {
     
                ObjectCollectionCache result;
                var entityConnection = (System.Data.EntityClient.EntityConnection)ctx.Connection; //(recuperer du contexte, une autre classe)
                DbConnection conn = entityConnection.StoreConnection;
                ConnectionState initialState = conn.State;
                try
                {
                    if (initialState != ConnectionState.Open) conn.Open();
                    using (DbCommand cmd = conn.CreateCommand())
                    {
                        IDataParameter p;
                        if (Parameters != null)
                        {
                            foreach (DictionaryEntry param in Parameters)
                            {
                                p = param.Key as IDataParameter;
     
                                if (p == null)
                                {
                                    p = CreateIDataParameter((string)param.Key, param.Value);
                                }
                                else
                                {
                                    p.Value = param.Value;
                                }
                                cmd.Parameters.Add(p);
                            }
                        }
                        cmd.CommandText = sp;
                        cmd.CommandType = CommandType.StoredProcedure;
                        DbDataReader reader = cmd.ExecuteReader();
                        result = new ObjectCollectionCache(reader);
                    }
                }
                finally
                {
                    if (initialState != ConnectionState.Open)
                        conn.Close();
                }
                return result;
            }

    une remarque, je passe les mêmes paramètres au deux procédures.
    avez vous une idée sur ce problème ?
    Merci infiniment.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    A priori c'est parce que tu réutilises les mêmes instances de paramètre dans 2 commandes. Un paramètre ne peut appartenir qu'à une seule commande, il faut donc les recréer pour la 2e commande. Sinon tu peux essayer de faire un cmd.Parameters.Clear() après avoir exécuté la commande...

Discussions similaires

  1. Réponses: 7
    Dernier message: 10/08/2012, 12h16
  2. Réponses: 2
    Dernier message: 28/03/2009, 19h13
  3. Tester si un string est contenu dans un autre
    Par totoen dans le forum C#
    Réponses: 19
    Dernier message: 18/02/2008, 09h23
  4. [RegEx] Rechercher si mot est contenu dans un autre
    Par Seb33300 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/08/2007, 23h52
  5. Réponses: 5
    Dernier message: 05/02/2007, 15h04

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