1、在沒有安裝oracle客戶端的設備上也能訪問服務器上的oracle (通俗的講就是:開發的應用程序 和 oracle數據庫服務器分別在兩台電腦上)
2、不需要配置TnsNames.Ora文件
開發環境 :
操作系統:win10
開發工具:VS2010
運行環境:.net 4.0
首先要下載odp.net文件,可以在這個頁面下載Oracle Data Access Components (ODAC) Downloads (http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html),
我下載的是ODAC 11.2 Release 4 and Oracle Developer Tools for Visual Studio (11.2.0.3.0)這個版本。
ODTwithODAC112030.zip 221 MB (231,828,322 bytes)
下載完成之后先用winrar解壓,不用安裝。
然后,在ODTwithODAC112030文件夾找
第一個路徑: ODTwithODAC112030\stage\Components\oracle.ntoledb.odp_net_2\11.2.0.3.0\1\DataFiles\ 找到 filegroup2.jar 文件,
用winrar解壓 filegroup2.jar ,
解壓后 ODTwithODAC112030\stage\Components\oracle.ntoledb.odp_net_2\11.2.0.3.0\1\DataFiles\filegroup2\odp.net\bin\4\
目錄中找到 Oracle.DataAccess.dll
第二個路徑:ODTwithODAC112030\stage\Components\oracle.ntoledb.odp_net_2\11.2.0.3.0\1\DataFiles\ 找到 filegroup16.jar 文件,
用winrar解壓 filegroup16.jar ,
解壓后 ODTwithODAC112030\stage\Components\oracle.ntoledb.odp_net_2\11.2.0.3.0\1\DataFiles\filegroup16\bin\
目錄中找到 OraOps11w.dll
第三個路徑:ODTwithODAC112030\stage\Components\oracle.rdbms.rsf.ic\11.2.0.3.0\1\DataFiles 找到 filegroup2.jar 文件,
用winrar解壓 filegroup2.jar,
解壓后 ODTwithODAC112030\stage\Components\oracle.rdbms.rsf.ic\11.2.0.3.0\1\DataFiles\filegroup2\bin
目錄中找到 oci.dll.dbl 和 ociw32.dll.dbl ,去掉 .dbl 文件就變成了oci.dll 和 ociw32.dll
第四個路徑:ODTwithODAC112030\stage\Components\oracle.rdbms.rsf.ic\11.2.0.3.0\1\DataFiles 找到 filegroup3.jar 文件,
用winrar解壓 filegroup3.jar,
解壓后 ODTwithODAC112030\stage\Components\oracle.rdbms.rsf.ic\11.2.0.3.0\1\DataFiles\filegroup3\bin
目錄中找到 oraocci11.dll
第五個路徑:ODTwithODAC112030\stage\Components\oracle.rdbms.ic\11.2.0.3.0\1\DataFiles 找到 filegroup4.jar 文件,
用winrar解壓 filegroup4.jar,
解壓后 ODTwithODAC112030\stage\Components\oracle.rdbms.ic\11.2.0.3.0\1\DataFiles\filegroup4\instantclient\light
目錄中找到 oraociicus11.dll
第六個路徑:ODTwithODAC112030\stage\Components\oracle.ldap.rsf.ic\11.2.0.3.0\1\DataFiles 找到 filegroup1.jar 文件,
用winrar解壓 filegroup1.jar,
解壓后 ODTwithODAC112030\stage\Components\oracle.ldap.rsf.ic\11.2.0.3.0\1\DataFiles\filegroup1\bin
目錄中找到 orannzsbb11.dll
如何報下面的錯誤:
ORA-12737: Instant Client Light: unsupported server character set %s
是因為缺少 oraociei11.dll 這個動態鏈接庫。
第七個路徑:ODTwithODAC112030\stage\Components\oracle.rdbms.ic\11.2.0.3.0\1\DataFiles 找到 filegroup3.jar 文件,
用winrar解壓 filegroup3.jar,
解壓后 ODTwithODAC112030\stage\Components\oracle.rdbms.ic\11.2.0.3.0\1\DataFiles\filegroup3\instantclient
目錄中找到 oraociei11.dll
最后把這些動態鏈接庫
Oracle.DataAccess.dll
OraOps11w.dll oci.dll ociw32.dll oraocci11.dll oraociicus11.dll orannzsbb11.dll
oraociei11.dll
復制到項目中,C/S架構的要與exe一個文件夾,B/S架構的有專門的bin目錄。
我將這些動態鏈接庫放在壓縮包里供大家下載
因為 oraociei11.dll 文件100多兆,無法上傳。
用VS2010(C#)新建一個項目(選擇.net framework 4.0) ,添加引用Oracle.DataAccess.dll
編碼如下:
using Oracle.DataAccess.Client;
string connstring = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.123)(PORT=1521))" +
"(CONNECT_DATA=(SID=xe)));User Id=system;Password=test963;";
using (OracleConnection conn = new OracleConnection(connstring))
{
conn.Open();
string sql = "select * from cd_subject";
using (OracleCommand comm = new OracleCommand(sql, conn))
{
using (OracleDataReader rdr = comm.ExecuteReader())
{
DataTable dt = new DataTable();
dt.Load(rdr);
dataGridView1.DataSource = dt;
dataGridView1.Refresh();
}
}
conn.Close();
}
實測環境
操作系統:winxp
運行環境:.net4.0
測試了簡單的SQL語句
結果:可以正常訪問服務器上的oracle數據庫。
參考:http://www.cnblogs.com/netuml/archive/2013/02/28/2936642.html