从c#连接到oracle

时间:2015-07-26 21:05:26

标签: c# oracle

我正在尝试从C#连接Oracle 11g。我已经关注[this link],定义了这样的连接别名:

moviess =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = xe)
    )
  )

尝试使用Visual Studio中的服务器资源管理器进行连接时,它会出现以下错误: enter image description here

以下是适用于Visual Studio的Oracle Developer Tool的安装目录。 enter image description here

我哪里错了?请帮助我。

3 个答案:

答案 0 :(得分:1)

这是问题所在:

ORA-12154: TNS: Could not resolve the connect identifier specified

这是原因:

  

https://docs.oracle.com/cd/B19306_01/server.102/b14219/net12150.htm

     

ORA-12154:TNS:无法解析指定的连接标识符

     

原因:使用连接标识符请求与数据库或其他服务的连接,并且指定的连接标识符可以   不能使用其中一个命名解析成连接描述符   方法配置。

     

例如,如果是连接标识符的类型   used是一个网络服务名称,然后网络服务名称不能   在命名方法存储库中找到,或者存储库不可能   位于或到达。

Action:

- If you are using local naming (TNSNAMES.ORA file):

- Make sure that "TNSNAMES" is listed as one of the values of the NAMES.DIRECTORY_PATH parameter in the Oracle Net profile (SQLNET.ORA)

- Verify that a TNSNAMES.ORA file exists and is in the proper directory and is accessible.

- Check that the net service name used as the connect identifier exists in the TNSNAMES.ORA file.
问:Oracle 11g是否实际安装在您的本地PC上?如果没有,则不能使用“localhost”。您还必须安装Oracle客户端。

相关链接:

答案 1 :(得分:1)

您可以使用NuGet中的 Oracle ODP.Net驱动程序

你可以试试这些:

  1. 右键点击参考,然后点击管理NuGet包
  2. 选择官方Oracle ODP.Net,托管驱动程序
  3. enter image description here

    1. 参考“Oracle.ManagedDataAccess.Client”
    2. 调用实际连接。
    3. 以下是示例代码:

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Threading.Tasks;
      using Oracle.ManagedDataAccess.Client;
      
      namespace SampleOracle
      {
          class Program
          {
              static void Main(string[] args)
              {
                  OracleConnection connection = new OracleConnection();
                  connection.ConnectionString = "User Id=<username>;Password=<password>;Data Source=<data source>"; //Data Source Format -> //IP_HOST:PORT/SERVICE_NAME e.g. //127.0.0.1:1521/Service_Name
                  connection.Open();
                  Console.WriteLine("Connected to Oracle" + connection.ServerVersion);           
              }
          }
      }
      

      示例输出:

      enter image description here

      希望这有帮助!

答案 2 :(得分:0)

要到达Add Connection窗口,您必须先通过此窗口,对吗?

enter image description here

信息很清楚。您尝试使用的提供程序已弃用,并且不支持Oracle 11。

根据建议,请考虑下载并安装Oracle Developer Tools for Visual Studio

编辑:我完全忘记提及这个非常重要的消息,因为当你确实这样做时: 使用{{1}连接到Oracle数据库以进行开发。 sys用户非常特殊,只有在绝对必要时才能使用。而是创建一个单独的用户,并将其用于开发。