Oracle
 sql >> Base de données >  >> RDS >> Oracle

Base de données Oracle TNS La longueur de la valeur pour la clé 'source de données' dépasse sa limite de '128'

Vous ne nous avez pas montré le code complet que vous utilisez pour vous connecter à une base de données, mais il semble d'un commentaire à une autre réponse que vous utilisez OLE DB. J'éviterais de l'utiliser, surtout s'il semble avoir une limite quelque peu arbitraire de 128 caractères pour une source de données.

Je précise également que vous pouvez également éviter d'avoir à installer un client Oracle, comme le recommande un autre répondeur. Je n'ai pas beaucoup d'expérience avec le client "instantané", mais le client complet est un téléchargement lourd et n'est pas nécessaire uniquement pour pouvoir connecter un programme C# à Oracle.

Au lieu de cela, nous pouvons utiliser la bibliothèque Oracle Managed Data Access. Vous pouvez l'installer à l'aide de NuGet. Pour ce faire :

  • accédez à Outils > Gestionnaire de packages de bibliothèque > Console du gestionnaire de packages,
  • assurez-vous que le bon projet est sélectionné dans la liste déroulante "Projet par défaut",
  • entrer

    Install-Package odp.net.managed
    

Cela devrait ajouter le téléchargement de la bibliothèque à partir de NuGet et ajouter Oracle.ManagedDataAccess aux références de votre projet.

Ensuite, si vous ajoutez un using directive pour Oracle.ManagedDataAccess.Client , le code suivant doit communiquer avec une base de données 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));
        }
    }
}