Подключение С# к Oracle
Какая лучшая библиотека/драйвер для подключения приложения С# (.NET) к Oracle 10g и 11g.
Текущие параметры, которые я нашел, следующие:
- Клиент Oracle, который поставляется с установкой базы данных
- Oracle Instant Client (немного запутанный, поскольку он имеет 6-8 версий для числа операционных систем)
- Microsoft ODBC? (Можно ли это использовать?)
- ODP.Net - это отдельный продукт или он включен в 1. и 2.?
Может кто-нибудь объяснить различия?
Я планирую приложение С#, которое будет выполнять базовые операции CRUD в базе данных Oracle. Какая библиотека/драйвер является самой маленькой и простой в установке?
Edit:
Общая рекомендация - использовать ODP.Net. Теперь, может кто-нибудь объяснить или указать на ответ о различиях между пакетами установки клиента. Я нашел 3 разных клиента для Oracle 11g:
Итак, какого из них достаточно для разработки? Документация Oracle болезненно детализирована, но ничего не говорит о различиях между этими клиентскими пакетами. Я бы пошел с самым маленьким (Instant Client). Это лучший выбор?
Изменить 2:
Я использую .Net 3.5
Ответы
Ответ 1
Чтобы подключить С# к oracle, вам нужен поставщик данных для .net. Это может быть одно из следующих:
- ODP.Net(Oracle)
- System.Data.OracleClient(Microsoft)
- ODBC (Oracle)
- OLEDB (Oracle)
- DataDirect ADO.NET Data Provider для Oracle (DataDirect)
- может быть другой поставщик
Все этого поставщика данных необходимо установить клиент oracle. В java нет отдельной библиотеки jdbc14.jar. У вас есть 2 варианта развертывания клиента oracle:
- полный клиент (может быть, из базы данных)
- мгновенный клиент
ODP.Net, ODBC, OLEDB являются частью полного клиента. Это "жесткий" способ, потому что процесс установки должен выполняться на каждом клиенте, запускающем ваше программное обеспечение. Здесь большинство мегабайт ставится на клиент.
мгновенный клиент предоставляется в разных пакетах. Это самый маленький способ для развертывания клиента оракула.
Я бы предложил использовать ODP.Net с Oracle Instant Client, потому что это простое развертывание и очень легкий вес.
Какие пакеты мгновенных запросов вам нужны:
- Выберите версию 11.1.0.6.0 (или новее, где предоставляется ODAC)
- Мгновенный клиентский пакет - базовый (если вам нужна полная поддержка языка)
- Мгновенный клиентский пакет - ODAC
Есть много статей о stackoverflow о развертывании мгновенного клиента oracle с приложениями С#.
EDIT: обновленные ссылки и версии
Ответ 2
Microsoft будет обесценить пространство имен System.Client.OracleClient
, поэтому я думаю, что лучше использовать ODP.NET. Убедитесь, что вы загрузили последнюю версию (ODP.NET 11g), поскольку предыдущие версии имели некоторые проблемы.
Ответ 3
ODP.NET - лучший поставщик для доступа к Oracle db, в основном - потому что он самый родной, который отличает его от ODBC следующим образом:
- лучшая производительность
- ODP.NET предоставляет доступ к расширенным функциональным возможностям Oracle, недоступным через ODBC.NET.
- ODP.NET не использует дополнительный мост доступа к данным.
ODBC также может использоваться, но, как упоминалось выше, он будет медленнее и имеет ограниченную функциональность.
Для работы с ODP.NET вам нужно программное обеспечение, указанное здесь (и включая клиента oracle):
http://www.oracle.com/technology/tech/windows/odpnet/faq.html#install
Надеюсь, это поможет!
Ответ 4
Возможно, я ошибаюсь, но ADO.NET интегрировала поддержку Oracle. возможно, для более ранних версий...
Ответ 5
Я думаю, что odbc слишком медленный. System.Data.OracleClient тоже немного медленный, и Microsoft будет устаревать.
Вы можете использовать провайдера devart, есть бесплатная версия. Его легко развернуть. См. Здесь http://www.devart.com/dotconnect/oracle/ Он поддерживает инфраструктуру сущности.
Odp.net работает быстро, но не поддерживает инфраструктуру сущности, и ее не так просто развернуть.
Ответ 6
Я действительно не могу сказать различия между предлагаемыми вами решениями, но я всегда использовал Oracle Data Access Components от Oracle, и он всегда работал безупречно. Его можно найти здесь: ODAC для Visual Studio
Конечно, библиотека, разработанная Oracle в .NET Framework, будет намного более точной, чем библиотека, разработанная компанией, внешней по отношению к Oracle. Например, в отношении исключений, возникающих при доступе к базе данных Oracle, они будут намного полезнее, если библиотека будет разработана командой разработчиков Oracle, поскольку они имеют дополнительные знания в Oracle DB.
Плохо то, что у вас будет зависимость, проблема, которую вам не придется преодолевать, если вы решили использовать .NET System.Data.OracleClient.
Надеюсь, это поможет. С наилучшими пожеланиями.
EDIT: пакет ODAC содержит ODP и инструменты разработчика Oracle
Ответ 7
ODP.NET - это собственный поставщик доступа к oracle db. И, следовательно, он должен быть лучше оптимизирован для oracle db. Кроме того, есть функция оракула, такая как тип REF CURSOR, которые не поддерживаются MS ODBC, но поддерживаются ODP.NET. Вы можете загрузить ODAC, который также включает ODP.NET, на веб-сайте www.aracle.com.