Вопрос по odbc, oledb, database – В чем разница между ODBC и OleDB?

7

Я нашел этот вопрос здесь:OLEDB v / s ODBC

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

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

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

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

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

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

Ваш Ответ

3   ответа
2

чных источников данных, вы должны использовать OLEDB. Я скопировал следующее из этогобелая бумага потому что он дает некоторые советы, что использовать, когда:

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.
@McSim: Ни один из этих пунктов не относится к вопросу. Вопрос был об использовании этих баз данных из C #. OP не будет вызывать API на основе ODBC C или API на основе OLE DB COM. Вы говорите, что пошли с OLEDB. Вы звоните в COM API?
Я думаю, важно отметить, что второй пункт относится только к поставщикам драйверов OLEDB (или к некоторым очень специализированным клиентам) - большинство клиентского программного обеспечения никогда не предоставляет такой интерфейс. И четвертая пуля просто говорит о маркетинге.
16

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

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

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

0

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

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

Может ли какой-нибудь даунверт объяснить причину понижения?
Тогда я не понимаю вопроса. Он не пытается решить, какой API использовать? Я думал, что он пытается решить, какие драйверы использовать для большей гибкости. Я не получил ничего от вопроса, который предполагает, что OP собирается начать вызывать OLEDB COM API.
Кроме того, идиоты не проблема. Проблема в том, что умные люди по понятным причинам понижают голос, а потом не говорят мне, в чем причина!
Я не понизил голос, но не думаю, что вы ответили на этот вопрос. Там много идиотов - я считаю, что лучше всего их игнорировать.

Похожие вопросы