sql >> Base de Datos >  >> RDS >> Oracle

Base de datos Oracle TNS La longitud del valor para la clave 'fuente de datos' excede su límite de '128'

No nos ha mostrado el código completo que usa para conectarse a una base de datos, pero parece de un comentario a otra respuesta que está usando OLE DB. Evitaría usarlo, especialmente si parece tener un límite un tanto arbitrario de 128 caracteres para una fuente de datos.

También señalaría que también puede evitar tener que instalar un cliente de Oracle, como lo recomienda otro respondedor. No tengo mucha experiencia con el cliente 'instantáneo', pero el cliente completo es una descarga considerable y no es necesario solo para poder conectar un programa C# a Oracle.

En su lugar, podemos usar la biblioteca Oracle Managed Data Access. Puede instalar esto usando NuGet. Para hacer esto:

  • vaya a Herramientas> Administrador de paquetes de la biblioteca> Consola del administrador de paquetes,
  • asegúrese de elegir el proyecto correcto en la lista desplegable 'Proyecto predeterminado',
  • entrar

    Install-Package odp.net.managed
    

Esto debería agregar la descarga de la biblioteca de NuGet y agregar Oracle.ManagedDataAccess a las Referencias de su proyecto.

Luego, si agrega un using directiva para Oracle.ManagedDataAccess.Client , el siguiente código debería comunicarse con una base de datos de 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));
        }
    }
}