Nie pokazałeś nam pełnego kodu, którego używasz do łączenia się z bazą danych, ale z komentarza do innej odpowiedzi wynika, że używasz OLE DB. Unikałbym jej używania, zwłaszcza jeśli wydaje się, że ma nieco arbitralny limit 128 znaków dla źródła danych.
Chciałbym również zwrócić uwagę, że można również uniknąć konieczności instalowania klienta Oracle, zgodnie z zaleceniami innego respondenta. Nie mam dużego doświadczenia z klientem „natychmiastowym”, ale pełny klient jest sporym pobraniem i nie jest potrzebny tylko do połączenia programu C# z Oracle.
Zamiast tego możemy skorzystać z biblioteki Oracle Managed Data Access. Możesz zainstalować to za pomocą NuGet. Aby to zrobić:
- przejdź do Narzędzia> Menedżer pakietów biblioteki> Konsola menedżera pakietów,
- upewnij się, że właściwy projekt został wybrany z listy rozwijanej „Projekt domyślny”,
-
wejdź
Install-Package odp.net.managed
Powinno to dodać pobieranie biblioteki z NuGet i dodać Oracle.ManagedDataAccess do referencji twojego projektu.
Następnie, jeśli dodasz using
dyrektywa dla Oracle.ManagedDataAccess.Client
, następujący kod powinien komunikować się z bazą danych 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));
}
}
}