oracle 在C# 中调用oracle的数据库时,出现引用库和当前客户端不兼容的问题解决方案
解决方案
1、直接引用 Oracle.ManagedDataAccess.Client.dll动态库即可,
2、引用 Oracle.DataAccess.Client.dll动态库,但根目录下面要有这八个动态库才可以正常使用Oracle 数据库,
(引用 Oracle.DataAccess.Client,但是使用Oracle.DataAccess.dll时,其生成根目录下要有这八个dll(Oracle.ManagedDataAccess这个库相当于后面八个库(oci,ociw32,orannzsbb11,oraocci11,oraociei11,oraons,OraOps11w,OWC11八个动态库))才可以使用11g oracle数据库)
下面是代码:
//using Oracle.DataAccess.Client;
using Oracle.DataAccess.Client;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;//using System.Data.OracleClient;//using Oracle.ManagedDataAccess.Client;namespace MyTest
{ class Program { static void Main(string[] args) {#region 引用 Oracle.ManagedDataAccess.Client
//OracleConnection con = null; //try //{ // //string connString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)));User Id=taizhou;Password=taizhou"; // //11g ORACLE // //string connString = "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.144)(PORT = 1521))(CONNECT_DATA = (SID = orcl))); User Id = evms; Password = evms; Pooling = true; Min Pool Size = 10; Max Pool Size = 100; Connection Lifetime = 120; Connection Timeout = 60; Incr Pool Size = 5; Decr Pool Size = 2;"; // //10g ORACLE // string connString = "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.158)(PORT = 1521))(CONNECT_DATA = (SID = ORCL))); User Id = evms; Password = evms; Pooling = true; Min Pool Size = 10; Max Pool Size = 100; Connection Lifetime = 120; Connection Timeout = 60; Incr Pool Size = 5; Decr Pool Size = 2; "; // //string connString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=130.147.246.144)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ECMS)));Persist Security Info=True;User ID=system;Password=Service01;"; // con = new Oracle.ManagedDataAccess.Client.OracleConnection(connString);// con.Open();
// SELECT* FROM TAIZHOU."UserInfo"
// //string connstring = @"Data Source=TAIZHOU;User ID=taizhou;Password=taizhou;"; // 实例化OracleConnection对象 // //OracleConnection conn = new OracleConnection(connstring); // 打开连接 // //conn.Open();// StringBuilder stringBuilder = new StringBuilder();
// Oracle.ManagedDataAccess.Client.OracleCommand oracleCommand = new Oracle.ManagedDataAccess.Client.OracleCommand("SELECT * FROM EVMS.USERINFO", con); // var ss = oracleCommand.ExecuteReader(); // while (ss.Read()) // { // string name = ss.GetOracleString(3).ToString(); // stringBuilder.AppendLine(name); // } // Console.WriteLine(stringBuilder.ToString()); // ss.Close(); // Console.Read(); //} //catch (Exception ex) //{ // Console.WriteLine("11111111111111"); //} //finally //{ // con.Close(); //} #endregion#region 引用 Oracle.DataAccess.Client,但是使用Oracle.DataAccess.dll时,其生成根目录下要有这八个dll(Oracle.ManagedDataAccess这个库相当于后面八个库(oci,ociw32,orannzsbb11,oraocci11,oraociei11,oraons,OraOps11w,OWC11八个动态库))才可以使用11g oracle数据库
OracleConnection con = null;
try { //string connString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)));User Id=taizhou;Password=taizhou"; //string connString = "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.144)(PORT = 1521))(CONNECT_DATA = (SID = orcl))); User Id = fcms; Password = fcms; Pooling = true; Min Pool Size = 10; Max Pool Size = 100; Connection Lifetime = 120; Connection Timeout = 60; Incr Pool Size = 5; Decr Pool Size = 2;"; string connString = "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.144)(PORT = 1521))(CONNECT_DATA = (SID = ORCL))); User Id = evms; Password = evms; Pooling = true; Min Pool Size = 10; Max Pool Size = 100; Connection Lifetime = 120; Connection Timeout = 60; Incr Pool Size = 5; Decr Pool Size = 2; "; //string connString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=130.147.246.144)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ECMS)));Persist Security Info=True;User ID=system;Password=Service01;"; con = new OracleConnection(connString);con.Open();
SELECT* FROM TAIZHOU."UserInfo"
//string connstring = @"Data Source=TAIZHOU;User ID=taizhou;Password=taizhou;"; 实例化OracleConnection对象 //OracleConnection conn = new OracleConnection(connstring); 打开连接 //conn.Open();StringBuilder stringBuilder = new StringBuilder();
OracleCommand oracleCommand = new OracleCommand("SELECT * FROM evms.USERINFO", con); var ss = oracleCommand.ExecuteReader(); while (ss.Read()) { string name = ss.GetOracleString(3).ToString(); stringBuilder.AppendLine(name); } Console.WriteLine(stringBuilder.ToString()); ss.Close(); Console.Read(); } catch (Exception ex) { Console.WriteLine("11111111111111"); } finally { con.Close(); } #endregion } }}