В чем разница между ODBC и OleDB?
=================================

Я нашел этот вопрос здесь:[OLEDB v / s ODBC](https://stackoverflow.com/questions/271504/oledb-v-s-odbc)

Это дало мне больше информации, но на самом деле не ответило на вопрос, который я задаю, поэтому я продолжу оттуда.

Я работаю в C #. Я избавлю вас от длинной истории о том, как я пришел к этой головоломке, но в основном я пытаюсь сделать выбор между ODBC и oleDB.

Мы работаем с множеством разных клиентов, которые имеют сильно различающиеся базы данных (некоторые SQL, некоторые оракулы, некоторые другие, о которых я никогда не слышал и не удосужился запомнить имя)

Теперь, насколько я понимаю, ODBC старый и был / является стандартом. А теперь появился OleDB и ... отличается? но выполняет то же самое (говорит с базами данных)

Зачем мне использовать один поверх другого? ODBC является (согласно вышеупомянутому посту) кроссплатформенным, что хорошо, но он предлагает очень мало информации о том, что OleDB предлагает, а ODBC нет.

В моем другом исследовании я обнаружил (на форумах MSDN), что люди, которые говорят "используют OleDB, если вы можете, если нужно, прибегаете к ODBC" Естественно, три причины не приводятся для этого, поэтому я хотел бы услышать некоторые из них.

 он поддерживается всеми основными поставщиками баз данных, он очень хорошо документирован, он кроссплатформенный. OLEDB является аналогичным интерфейсом, который использует технологию COM от Microsoft вместо C API. Это означает, что его легко использовать только на платформах, которые поддерживают COM.

В конце концов, обе библиотеки предоставляют примерно эквивалентную базовую функциональность. Действительно, некоторые драйверы OLEDB фактически используют ODBC, а не собственные библиотеки баз данных.

Итак, если вы являетесь разработчиком C # и работаете в Windows, OLEDB - очевидный выбор между ними. Если вы используете C (или C ++, не используя COM) или вам нужна кроссплатформенная поддержка, тогда лучше использовать ODBC.



чных источников данных, вы должны использовать OLEDB. Я скопировал следующее из этого[белая бумага](http://www.dmxzone.com/go?863) потому что он дает некоторые советы, что использовать, когда:

**OLE DB is Not a Replacement for ODBC**

The ODBC technology and third-party market have matured to a point at which ODBC is an ideal technology for accessing SQL databases. As a result, an integral part of OLE DB is a new OLE DB driver manager that enables OLE DB consumers to talk to ODBC providers. The following information can guide your choice of which technology to use: 

 
 
 If you are accessing standard relational databases from a non-OLE environment, ODBC is the best choice. 
 If you want to expose a data interface to non-SQL data, OLE DB is the best choice. 
 If you are programming in an OLE environment, OLE DB is the best choice. 
 If want to build interoperable database components, OLE DB is the only choice.
 


 вы не будете напрямую использовать ни один из них. Вы будете использовать ADO.NET в той или иной форме.

Правда, провайдер, который вы указываете в строке подключения, может оказаться провайдером ODBC или провайдером OleDB, но это не имеет значения для вашего кода. ADO.NET будет оба API с вашей точки зрения.