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相关文件。
基础才是编程人员应该深入研究的问题,比如:
1)List/Set/Map内部组成原理|区别
2)mysql索引存储结构&如何调优/b-tree特点、计算复杂度及影响复杂度的因素。。。
3)JVM运行组成与原理及调优
4)Java类加载器运行原理
5)Java中GC过程原理|使用的回收算法原理
6)Redis中hash一致性实现及与hash其他区别
7)Java多线程、线程池开发、管理Lock与Synchroined区别
8)Spring IOC/AOP 原理;加载过程的。。。
【+加关注】。