Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle-Datenbank TNS Die Länge des Werts für den Schlüssel „Datenquelle“ überschreitet die Grenze von „128“.

Sie haben uns nicht den vollständigen Code gezeigt, den Sie zum Herstellen einer Verbindung mit einer Datenbank verwenden, aber aus einem Kommentar zu einer anderen Antwort scheint hervorzugehen, dass Sie OLE DB verwenden. Ich würde es vermeiden, es zu verwenden, insbesondere wenn es eine etwas willkürliche Grenze von 128 Zeichen für eine Datenquelle zu haben scheint.

Ich möchte auch darauf hinweisen, dass Sie auch vermeiden können, einen Oracle-Client zu installieren, wie von einem anderen Antwortenden empfohlen. Ich habe nicht viel Erfahrung mit dem „Instant“-Client, aber der vollständige Client ist ein kräftiger Download und nicht notwendig, nur um ein C#-Programm mit Oracle verbinden zu können.

Stattdessen können wir die Oracle Managed Data Access-Bibliothek verwenden. Sie können dies mit NuGet installieren. Dazu:

  • Gehen Sie zu Tools> Library Package Manager> Package Manager Console,
  • vergewissern Sie sich, dass das richtige Projekt in der Dropdown-Liste "Standardprojekt" ausgewählt ist,
  • eingeben

    Install-Package odp.net.managed
    

Dies sollte die Bibliothek von NuGet herunterladen und Oracle.ManagedDataAccess zu den Referenzen Ihres Projekts hinzufügen.

Wenn Sie dann einen using hinzufügen Direktive für Oracle.ManagedDataAccess.Client , sollte der folgende Code mit einer Oracle-Datenbank kommunizieren:

string connStr = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<hostname>)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=<service_name>)));User Id=<user>;Password=<password>";
Console.WriteLine("Connection string has length " + connStr.Length);
using (var connection = new OracleConnection() { ConnectionString = connStr })
{
    connection.Open();
    OracleCommand command = new OracleCommand("SELECT * FROM DUAL", connection);
    using (OracleDataReader reader = command.ExecuteReader())
    {
        while (reader.Read())
        {
            Console.WriteLine(reader.GetString(0));
        }
    }
}