用vs2008链接oracle数据库出现问题,报错OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用,从网上找了好久方法,有两种oracle客户端文件权限,和运行vs2008以管理员身份,这些都试过了没有用,查了好久还是没有解决问题,只好换一种方式链接oracle数据了。
我使用的是ODAC方式链接oracle数据库,这样就不需要安装oracle客户端了,我的操作步骤如下:
1.从[url=https://download.oracle.com/otn/other/oloracle账号e-oo4o/ODTwithODAC1110621.zip?AuthParam=1427792567_926a5eb7e7f7456724673afbdb80c825][/url]下载安装ODAC安装文件,因为我需要安装文件下面的几个DLL,下载下来的文件为ODTwithODAC1110621.zip 压缩文件。
2.我们解压之后里面有安装setup.exe.点击执行,之后弹出一个dos界面,等待几十秒之后弹出安装界面。按提示点击下一步完成安装。到90%的时候安装会比较慢。
3.安装完之后我们在安装路径下(我的是E:\app\Administrator)可以找到oci.dll,ociw32.dll,orannzentr11,orannzmcs11,orannzsbb11,oraocci11,oraociei11,orasql11.dll,orasqlplusic11,sqora32,sqresja,就这么多DLL,最关键的一个DLL是在(我的是E:\app\Administrator\odp.net\bin)路径下里面有两个文件夹,你对应自己的.Net Framework 选择Oracle.DataAccess.dll。
4.将上面提到的DLL拷贝到DeBug的路径下面,我的asp.net程序,我拷贝到了bin目录下面
5.重新生成解决方案,写段使用Oracle.DataAccess.Client方式链接Oracle的方式试一下,是否可以链接成功。
6.我提供下我的例子
测试例子
public void connByOracleClient() { string connString = @"user id=XXXXpassword=XXXX;Data Source=(DESCRIPTION =" + "(ADDRESS = (PROTOCOL = TCP)(HOST = XX.xx.xx.xx)(PORT = 1521))" + " (CONNECT_DATA =" + " (SERVER = DEDICATED)" + " (SERVICE_NAME = xx)" + "))"; OracleConnection conn = new OracleConnection(connString); conn.Open(); string sql = "select * from xx"; OracleCommand comm = new OracleCommand(sql, conn); OracleDataReader rdr = comm.ExecuteReader(); while (rdr.Read()) { string s = rdr.GetString(5); }
运行成功没有任何错误和异常。