ODAC:未将对象引用设置为对象的实例

时间:2015-11-09 19:04:47

标签: c# oracle visual-studio odac

我正在尝试连接到Oracle Express 11g。我在Visual Studio 2015中使用ODAC 12c。以下是我尝试连接的方式:

OracleConnection con;
con = new OracleConnection("User Id=SYSTEM;Password=manager;Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.1.22)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = XE)))");
con.Open();

应用程序崩溃并提供Exception(不是OracleException):Object reference not set to an instance of an object.如果我没有设置连接字符串,则会按预期提供OracleException。怎么了?

3 个答案:

答案 0 :(得分:1)

OracleConnection使用Oracle.DataAccess DLL(不推荐使用,请阅读ODP.net)

您可能必须安装oracle客户端11g才能提供neccessery DLL。 几点:

  1. 确保正确配置tns
  2. 按构建设置(32/64位)安装ora客户端
  3. 确保将DLL引用添加到解决方案中。

答案 1 :(得分:0)

请确保引用正确,并且Oracle.DataAccess.dll的版本正确。

请按照以下步骤操作。它对我有用。

  1. 在Oracle安装路径上的“ <> product \ 12.2.0 \ client_1”中找到并复制oraons.dll文件

  2. 将文件粘贴到“ <> product \ 12.2.0 \ client_1 \ bin目录

尝试再次调用代码。

答案 2 :(得分:0)

请尝试以下解决方案:

string connString = "User Id=SYSTEM;Password=manager;Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.1.22)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = XE)))";

OracleConnection conn = new OracleConnection();
conn.ConnectionString = connString;
conn.Open();

有关更多信息: Oracle Connection in C# - connection string