2009-01-30 24 views
7

Muszę opracować narzędzie w języku C#, które pobiera pewne dane z bazy danych Oracle. Ponieważ nasza obsługa IT ma problemy z instalacją klienta Oracle, chcę mieć możliwość połączenia się z bazą danych bez zainstalowanego klienta. Chodzi o to, aby po prostu zainstalować (i być może zarejestrować) dodatkową bibliotekę wraz z aplikacją.Alternatywne sterowniki Oracle dla .net

Jakie alternatywy dla klienta Oracle istnieją i jakie są ich zalety i wady?

Jest to mała aplikacja (1 formularz, 2 lub 3 zapytania, wynik wyświetlany w DataGrid, prawdopodobnie nie więcej niż 10-20 zestawów danych), ale interesują mnie również kwestie skalowalności, ponieważ możemy również odejść od klienta Oracle z większymi przyszłymi projektami.

Oczywiście darmowe rozwiązanie byłoby miłe, ale nie jesteśmy do tego ograniczeni.

Odpowiedz

8

Istnieje kilka różnych smaków z Oracle ODP.Net driver. Którą wersję próbujesz użyć?

Wygląda na to, że potrzebujesz Oracle 11g ODAC 11.1.0.6.21 z wdrożeniem Xcopy, który umożliwia wdrożenie klienta Oracle Instant i sterownika ODP.Net przez skopiowanie kilku bibliotek DLL i zarejestrowanie ich. To nie wymaga pełnej instalacji klienta Oracle.

+1

Dokładnie. Nasza sieć firmowa jest chaotyczna, bez śledzenia tego, co jest zainstalowane. Chcę mieć pewność, że aplikacja będzie działać na wszystkich komputerach, na których jest zainstalowana, bez konieczności określania zainstalowanego klienta Oracle i żądania od IT aktualizacji, i czekać, aż będą mogli to zrobić ... – Treb

+1

Nowy link: http : //www.oracle.com/technetwork/database/windows/downloads/index-101290.html – JohnB

+0

@JohnB - Dzięki, zaktualizowałem link –

0

Klient biblioteki korporacyjnej System.Data.OracleClient jest realną alternatywą dla dostawcy ODP.NET firmy Oracle. Istnieją pewne zastrzeżenia dotyczące severli, ale powinieneś wiedzieć, że korzystanie z klienta Microsoft sprawi, że praca z dowolnym typem dużych obiektów będzie niezmiernie trudna, niezależnie od tego, czy są to łańcuchy XML, CLOBy, obiekty LOB czy obiekty BLOB. Również kolumna Oracle XmlType nie jest obsługiwana i musi zostać przekazana do elementu CLOB, który ma zostać zwrócony do OracleClient.

+0

Jeśli potrzebujesz pracować z LOB, napisałem post na blogu na ten temat: http: //dotnetchris.wordpress.com/2008/04/10/writting-lobs-clobs-to-oracle-using-c-aspnet-20/IMO to najlepsze możliwe rozwiązanie, po prostu upewnij się, że posiadasz pulę połączeń działającą z jej użyciem. –

+0

Pobrane z MSDN dla System.Data.OracleClient: "Musisz także mieć zainstalowany klient Oracle 8i lub nowszy." Dokładnie to, czego chcę uniknąć, obawiam się ... – Treb

+0

OracleClient jest teraz również przestarzałe przez MS. – gbjbaanb

9

Twoim zadaniem można osiągnąć bez konieczności jakiegokolwiek oprogramowania firm trzecich:

  1. Install Oracle Data Access Components 11g w polu rozwoju. ODAC 11g jest kompatybilny wstecz z 9i i 10g
  2. Dodaj odwołanie do biblioteki ODAC w projektach .NET (Oracle.DataAccess.dll).
  3. Pozwól aplikacji połączyć się bez użycia TNSNAMES.ORA. Aby to zrobić, trzeba to connect deskryptor w ciągu połączenia:

    "user id = Scott; password = tygrys; Data Source =" + "(DESCRIPTION = (ADDRESS = (protocol = tcp)" + "(HOST = sales-server) (PORT = 1521)) (CONNECT_DATA =" + "(SERVICE_NAME = sales.us.acme.com)))"

Ponieważ jesteś tym connect deskryptor w ciągu połączenia cienki klient nie jest wymagany na docelowych komputerach.

Szczęśliwe wdrażanie.

3

Oracle ma obecnie wersję ODP.NET, która jest w pełni zarządzana, umożliwiając programistom łączenie się z bazami danych Oracle, jednocześnie odwołując się do pojedynczej biblioteki DLL. Jest więcej informacji here.

Obecne wersje można znaleźć here.

+0

Dziękuję, chociaż ten rozwój przychodzi mi 4 lata za późno ... ale jestem pewien, że spotkam ponownie Oracle w moim życiu ;-) – Treb

+1

ha, mam nadzieję, że to pomoże innym, którzy natkną się na ten post od Google –