sql >> Databáze >  >> RDS >> Oracle

Databáze Oracle TNS Délka hodnoty pro klíč „zdroj dat“ překračuje svůj limit „128“

Neukázali jste nám úplný kód, který používáte pro připojení k databázi, ale z komentáře k jiné odpovědi se zdá, že používáte OLE DB. Vyhnul bych se jeho použití, zejména pokud se zdá, že má poněkud libovolný limit 128 znaků pro zdroj dat.

Chtěl bych také zdůraznit, že se můžete také vyhnout nutnosti instalovat klienta Oracle, jak doporučuje jiný respondent. S „okamžitým“ klientem nemám moc zkušeností, ale úplný klient je náročný ke stažení a není nutný jen k tomu, aby bylo možné připojit program v C# k Oracle.

Místo toho můžeme použít knihovnu Oracle Managed Data Access. Můžete to nainstalovat pomocí NuGet. Postup:

  • přejděte na Nástroje> Správce balíčků knihoven> Konzola správce balíčků
  • ujistěte se, že v rozevíracím seznamu Výchozí projekt je vybrán správný projekt,
  • zadejte

    Install-Package odp.net.managed
    

To by mělo přidat ke stažení knihovnu z NuGet a přidat Oracle.ManagedDataAccess do referencí vašeho projektu.

Potom, pokud přidáte using direktiva pro Oracle.ManagedDataAccess.Client , měl by následující kód komunikovat s databází 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));
        }
    }
}


  1. Načíst celý řádek, ale chybí první záznam

  2. Vložte do tabulky MySQL nebo aktualizujte, pokud existuje

  3. Podpora SQL Server 2008 končí. Co teď?

  4. vložit při aktualizaci duplicitního klíče