Oracle
 sql >> Database >  >> RDS >> Oracle

Database Oracle TNS La lunghezza del valore per la chiave "origine dati" supera il limite di "128"

Non ci hai mostrato il codice completo che usi per la connessione a un database, ma da un commento a un'altra risposta sembra che tu stia utilizzando OLE DB. Eviterei di usarlo, soprattutto se sembra avere un limite alquanto arbitrario di 128 caratteri per un'origine dati.

Segnalo inoltre che puoi anche evitare di dover installare un client Oracle, come consigliato da un altro risponditore. Non ho molta esperienza con il client "istantaneo", ma il client completo è un download pesante e non è necessario solo per poter connettere un programma C# a Oracle.

Invece, possiamo utilizzare la libreria Oracle Managed Data Access. Puoi installarlo usando NuGet. Per fare questo:

  • vai su Strumenti> Libreria Package Manager> Package Manager Console,
  • assicurati che il progetto corretto sia scelto nell'elenco a discesa "Progetto predefinito",
  • entra

    Install-Package odp.net.managed
    

Questo dovrebbe aggiungere il download della libreria da NuGet e aggiungere Oracle.ManagedDataAccess ai riferimenti del tuo progetto.

Quindi, se aggiungi un using direttiva per Oracle.ManagedDataAccess.Client , il codice seguente dovrebbe comunicare con un database Oracle:

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));
        }
    }
}