sql >> Database >  >> RDS >> Oracle

Oracle-database TNS De lengte van de waarde voor de sleutel 'gegevensbron' overschrijdt de limiet van '128'

U heeft ons niet de volledige code getoond die u gebruikt om verbinding te maken met een database, maar uit een opmerking bij een ander antwoord blijkt dat u OLE DB gebruikt. Ik zou het niet gebruiken, vooral als het een enigszins willekeurige limiet van 128 tekens lijkt te hebben voor een gegevensbron.

Ik wil er ook op wijzen dat je ook kunt voorkomen dat je een Oracle-client hoeft te installeren, zoals aanbevolen door een andere antwoorder. Ik heb niet veel ervaring met de 'instant'-client, maar de volledige client is een flinke download en is niet alleen nodig om een ​​C#-programma aan Oracle te kunnen koppelen.

In plaats daarvan kunnen we de Oracle Managed Data Access-bibliotheek gebruiken. U kunt dit installeren met NuGet. Om dit te doen:

  • ga naar Tools> Library Package Manager> Package Manager Console,
  • zorg ervoor dat het juiste project is gekozen in de vervolgkeuzelijst 'Standaardproject',
  • voer in

    Install-Package odp.net.managed
    

Dit zou de bibliotheek van NuGet moeten downloaden en Oracle.ManagedDataAccess moeten toevoegen aan de referenties van uw project.

Als u vervolgens een using richtlijn voor Oracle.ManagedDataAccess.Client , moet de volgende code communiceren met een Oracle-database:

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


  1. Het verschil begrijpen tussen int letterlijke versus int-parameter in de PL / pgSQL-functie

  2. PLS-00386:type-mismatch gevonden tussen FETCH-cursor en INTO-variabelen

  3. django - verzamel json-veldspecifieke sleutels en volg de aggregatie

  4. Oracle:als tabel bestaat