【问题标题】:How to connect to Oracle DB from .NET?如何从 .NET 连接到 Oracle DB?
【发布时间】:2016-06-17 15:36:21
【问题描述】:

当我打开 SQL 命令行时,我写了CONNECT username/password@[//]host[:port][/service_name],它将我连接到数据库就好了。但是,我无法使用连接字符串从 .NET 项目进行连接。我尝试了很多东西,例如<add name="ConnectionString" connectionString="Data Source=username/password@[//]host[:port][/service_name];" /><add name="ConnectionString" connectionString="server=tcp:host;Initial Catalog=service_name; user id=username; password=password; Connection Timeout=180;" providerName="System.Data.OracleClient" />,但到目前为止没有任何效果。每当我通过以下方式到达sconn.Open(); 时:

var CurrentConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection sconn = new SqlConnection(CurrentConnectionString);
sconn.Open();

我几乎总是得到以下错误:

发生网络相关或特定于实例的错误,同时 建立与 SQL Server 的连接。找不到服务器或 无法访问。验证实例名称是否正确,并且 SQL Server 配置为允许远程连接。 (提供者:SQL 网络接口,错误:25 - 连接字符串无效)

如何正确连接数据库?

【问题讨论】:

  • 服务器可以配置为不允许远程连接。这在所有主要的 RDBMS 服务器、MSSQL、PostgreSQL、MySql 中都是如此,我想 Oracle 也是如此。如果它不允许远程连接,那么即使您的连接字符串正确,它也将无法访问。

标签: c# .net oracle web-config connection-string


【解决方案1】:

您使用 System.Data.SqlClient.SqlConnection 用于连接到 (Microsoft) SQL Server,它不能用于 Oracle 连接。

您应该使用System.Data.OracleClient.OracleConnectionOracle.ManagedDataAccess.Client.OracleConnection

查看此答案以了解其他可能性: How to connect to Oracle 11 database from . net

【讨论】:

    【解决方案2】:

    我强烈推荐使用“Official Oracle ODP.NET, Managed Driver”。

    https://www.nuget.org/packages/Oracle.ManagedDataAccess/

    或者实体框架的一个: https://www.nuget.org/packages/Oracle.ManagedDataAccess.EntityFramework/

    通过 Visual Studio 安装后,它会打开一个我也建议您阅读的自述文件。

    Oracle 提供大量文档。这是开始的地方: http://www.oracle.com/technetwork/topics/dotnet/whatsnew/index.html

    【讨论】:

      【解决方案3】:

      尝试以下连接字符串

      string con = "Data Source=(DESCRIPTION =(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST = 000.00.0.00)(PORT = 0000)))(CONNECT_DATA =(SERVICE_NAME = database)));User ID=User/Schema;Password=password;Unicode=True";
      

      & 然后使用这个连接字符串如下

      using (OracleConnection objConn = new OracleConnection(con))
       {
         \\ code
       }
      

      【讨论】:

      • OracleException: Could not allocate the Oracle environment. 在 .NET Standard 类库中使用时
      【解决方案4】:

      您始终可以使用 EF,并使用创建一个ADO.Net Entity Data Model

      并使用向导创建和测试连接

      【讨论】:

        猜你喜欢
        • 2018-07-18
        • 2019-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-21
        • 1970-01-01
        • 2011-01-29
        相关资源
        最近更新 更多