oracle組建:ODAC112021Xcopy_x64,在開發機上,不用安裝oracle的客戶端等開發


配置的應用程序為x64的應用程序,以下解決方案是為了連接遠程服務器上的oracle 11g 的解決方案。

  • 下載地址:http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html
  • 下載版本:64-bit ODAC 11.2 Release 3 (11.2.0.2.1) Xcopy for Windows x64
  • 下載后文件名:ODAC112021Xcopy_x64.zip

解壓后將看到如下目錄:

  • asp.net               -- asp.net 2.0需要的放在bin下的文件。
  • asp.net4  -- asp.net 2.0需要的放在bin下的文件。
  • instantclient_11_2 -- 公共的dll,需要的放在bin下的文件。
  • odp.net4  -- winform2.0 需要的放在bin下的文件。
  • odp.net20  -- winform2.0 需要的放在bin下的文件。
  • oledb   -- 公共的dll,需要的放在bin下的文件。
  • oramts   -- 在開發時,這個文件,我沒有用到
  • xxx.bat(一些安裝的命令文件,這些文件不需要執行)

我在開發時,

  • 1,)沒有直接執行instantclient_11_2下的任何文件,而是把該目錄下的所有文件及文件夾拷貝到bin目錄下(或者不拷貝應用程序的bin下,把該目錄拷貝到某一個路徑下,之后在環境path變量中追加該地址到path中)。
  • 2,)之后包oledb下的所有.dll拷貝到 bin目錄下;
  • 3,)odp.net4下載所有.dll拷貝到bin目錄下。 

到此我們需要的所有oracle的dll已經拷貝完成,添加Oracle.DataAccess.dll引用到我們工程中;

在ODAC112021Xcopy_x64\odp.net4\odp.net\PublisherPolicy\4下包含兩個文件:
Policy.4.112.Oracle.DataAccess.config
Policy.4.112.Oracle.DataAccess.dll
我已經把他們拷貝到bin目錄了,之后打開Policy.4.112.Oracle.DataAccess.config,將:
  <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
          <assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89B483F429C47342"/>
            <bindingRedirect oldVersion="4.112.0.0-4.112.2.0" newVersion="4.112.2.0"/>
        </dependentAssembly>
      </assemblyBinding>
   </runtime>
添加到工程的config中。

在工程中引入命名空間(而不需要引入System.Data.OracleClient,而是Oracle.DataAccess.dll或者Oracle.ManagedDataAccess.dll):

 1 using Oracle.DataAccess.Client; 2 using Oracle.DataAccess.Types; 

測試代碼:

 1 string connecitonString = @"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.21.3.34)(PORT=1521))(CONNECT_DATA=(SID=db001)));User Id=username;Password=password;";
 2 
 3             DataTable datatable = new DataTable();
 4 
 5             using (OracleConnection connection = new OracleConnection(connecitonString))
 6             {
 7                 using (OracleCommand command = new OracleCommand())
 8                 {
 9                     connection.Open();
10 
11                     command.Connection = connection;
12                     command.CommandText = "select * from table_001 where rownum<10";
13                     command.CommandType = CommandType.Text;
14 
15                     OracleDataAdapter dataAdapter = new OracleDataAdapter(command);
16 
17                     dataAdapter.Fill(datatable);
18                 }
19             }

 

折騰了,n久才把程序調通。

注意:發布時需要包含bin下的所有外部oracle組件.dll相關文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM