BOnjour,
j'ai un soucis dans une fonction que j'utilise, pour executer une requete. Après avoir cherché sur internet, comme ils le précisent, j'ai bien fermé mes curseurs, mais l'erreur est toujours là, voici ma procédure :
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 
 
   private string RechercheRaison(string numabo)
    {
        log.Debug("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
        log.Debug("~Recuperation de la raison sociale pour le client " + numabo);
        log.Debug("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
        NameValueCollection appSettings = System.Configuration.ConfigurationManager.AppSettings;
        OracleConnection OConnexion = new OracleConnection(appSettings["ConnexionString"]);
        string rechercheraison = "";
        string RAISON = "";
 
        OConnexion.Open();
        try
        {
 
            rechercheraison = "select RAISONPRE from " + System.Configuration.ConfigurationManager.AppSettings["CustomerInformationTable"] + " where NUMABO = '" + numabo + "'";
            log.Debug("requete  envoyee : " + rechercheraison);
 
            OracleCommand commRecherche = new OracleCommand(rechercheraison, OConnexion);
            OracleDataReader monreader = commRecherche.ExecuteReader();
 
 
            if (!monreader.HasRows)
            {
                System.Threading.Thread.Sleep(2000);
                monreader = commRecherche.ExecuteReader();
 
            }
 
            monreader.Read();
 
            if (monreader.HasRows)
            {
                RAISON = commRecherche.ExecuteScalar().ToString();
                log.Debug("RAISON récupéré :  " + RAISON);
                log.Info("------ SUCCES DE LA RECUPERATION DE LA RAISON SOCIALE ----- ");
 
            }
            else
            {
                log.Debug("Aucune raison retourné ");
                RAISON = "";
            }
 
            return RAISON;
        }
        catch (Exception e)
        {
            log.Error("<> Erreur dans la recuperation de la raison : " + e.ToString());
 
            OConnexion.Close();
            OConnexion.Dispose();
            return "";
        }
        finally
        {
            OConnexion.Close();
            OConnexion.Dispose();
        } 
    }
et le message retourné :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
 Erreur dans la recuperation de la raison sociale System.Data.OracleClient.OracleException (0x80131938): ORA-01000: nombre maximum de curseurs ouverts dépassé
 
   à System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc)
   à System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals)
   à System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, ArrayList& resultParameterOrdinals)
   à System.Data.OracleClient.OracleCommand.ExecuteReader(CommandBehavior behavior)
   à System.Data.OracleClient.OracleCommand.ExecuteReader()
   à InjecteurDeMasse.Form1.RecuperationRaisonSocial(String numclt)
Donc comme je le disais, je ferme mon curseur mais rien n'y fait. Petit détails ( qui a son importance ou pas ? ) dans mon code, j'ai aucune erreur mais ici par ex :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
  OracleConnection OConnexion = new OracleConnection(appSettings["ConnexionString"]);
OracleConnection est souligné en verte et ça dis " system.dataOracle est obsolète ... OracleConnection has been depreciated ..... "

Je vous remercie par avance pour les explications et votre aide.