OleDB против ODBC: один из них НЕ требует установки драйвера ДЛЯ ВСЕХ Oracle, MySQL, SQL Server?

Я хочу, чтобы мое приложение могло работать с несколькими поставщиками баз данных. Другими словами, в зависимости от инфраструктуры БД клиента, схема базы данных будет развернута на одном из Oracle, MySQL, SQL Server. Я использую ODBC и OleDB, а также следующие ключевые требования, которые необходимо учитывать при выборе:

  • схема БД должна быть создана из приложения (мне сказали, что ODBC может быть проблематичным в этом случае, это правда?)
  • настоятельно желательно, чтобы конечным пользователям не требовалось устанавливать какое-либо дополнительное программное обеспечение (например, Oracle Instant Client и т. д.). Итак, драйвер должен быть либо:

    1. already bundled with Windows. Does Windows have a generic version of ODBC / OleDB?
    2. иметь возможность связываться с приложением. I.E. в Java я могу связать драйвер JDBC для MySQL как файл .jar с моим приложением. Можно ли это сделать, включив файл .dll?
  • настоятельно желательно, чтобы конечным пользователям не требовалось выполнять какие-либо внешние настройки, такие как создание источников данных ODBC.

Ваше здоровье!


person Markos Fragkakis    schedule 14.07.2009    source источник


Ответы (4)


Большинство драйверов ODBC / OLEDB используют «общий язык», для которого по-прежнему требуется какой-то собственный драйвер устройства или «установка клиента», предоставляемая поставщиком, для правильного подключения к базе данных.

Вам нужен подходящий драйвер ADO.NET, в который будут встроены все необходимые библиотеки, или для него может потребоваться только вторая DLL, которая не требует «установки клиента». Это также позволит легко использовать строку Connectin в файле app.config и все преимущества ADO.NET.

Вот несколько ссылок на самые популярные из них:

person Dillie-O    schedule 14.07.2009
comment
ODP .NET требует наличия собственного клиента. Вы можете отправить Instant Client (см. stackoverflow.com/questions/70602/) или использовать другого (коммерческого) поставщика Oracle (см. datadirect.com/products/net/net%5Ffor%5Foracle/ index.ssp ​​ или devart.com/dotconnect/oracle). - person Mac; 13.10.2009

У вас должен быть установлен соответствующий драйвер для конкретной базы данных.

После его установки строка подключения также будет в некоторой степени зависеть от базы данных.

При использовании ADO.NET большая часть взаимодействия с базой данных в коде может быть независимой за счет использования общих интерфейсов (например, IDbCommand ), а не подклассы, зависящие от провайдера, но фабрика, зависящая от провайдера, все равно будет необходима.

Даже в этом случае диалекты и типы данных SQL значительно различаются.

Ожидайте, что вам нужно будет хорошо разбираться в создании собственных рефератов, инверсии управления (IoC) и отладке каждой отдельной базы данных. Последнее будет четко указывать на активную отладку на нескольких платформах баз данных с самого начала проекта, чтобы избежать внезапной необходимости в значительных усилиях по переносу.

person Richard    schedule 14.07.2009

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

person FerranB    schedule 14.07.2009

Что ж, да, но для этого вам не нужны ни ODBC, ни OLEDB. Вы можете получить 100% нативных поставщиков ADO.NET для SQL Server, MySQL и Oracle отсюда http://www.datadirect.com/products/net/index.ssp.

person Keith Adler    schedule 14.07.2009