2010-01-08 3 views
0

J'utilise une base de données Oracle (10g) qui contient une procédure stockée appelée Foo.Impossible de se connecter à la base de données (OCIenVCreate a échoué)

Foo prend 2 datetime comme paramètres IN et 1 curseur comme paramètre OUT. J'ai essayé de faire la connexion et la requête à la base de données avec OleDbCommand, mais comme Foo a besoin d'un curseur, je n'ai pas d'autre choix que d'utiliser OracleCommand (non?).

Lorsque j'essaie de me connecter à la base de données, j'obtiens l'erreur suivante: "OCIenvCreate a échoué le code de retour -1". J'ai donné les permissions correctes à l'utilisateur ASPNET pour le fichier oci.dll afin qu'il puisse le lire et l'exécuter. Malheureusement, j'ai toujours la même erreur et je suis perdu.

Voici ce qui cause l'erreur

 OracleConnectionStringBuilder conBuilder = new OracleConnectionStringBuilder(); 
     conBuilder.DataSource = dataSrc; 
     conBuilder.UserID = user; 
     conBuilder.Password = password; 

     OracleConnection con = new OracleConnection(conBuilder.ConnectionString); 

     OracleCommand cmd = new OracleCommand("foo", con); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.Add("this_is_a_cursor", OracleType.Cursor).Direction = ParameterDirection.Output; 

     con.Open(); // Cause the error at runtime 
     OracleDataReader reader = cmd.ExecuteReader(); 
     GridView1.DataSource = reader; 
     GridView1.DataBind(); 
     con.Close(); 

J'ai remarqué que d'autres personnes ont le même problème. Je lance l'application à partir d'une édition Windows Server 2003 Entreprise (j'espère que cela peut aider).

Merci.

Répondre

0

Je ne sais pas exactement quel était le problème exact, mais j'ai réussi à me connecter à ma base de données avec un autre fournisseur dans la chaîne de connexion.

Questions connexes