Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Базы данных FAQ > [на редактирование] ODBC, Простые вопросы


Автор: Vit 17.01.04, 16:27
Привет народ.
Я очень долго не решался задать все эти вопросы вам и надеюсь мне кто-нибудь ответит.
Конечно я понимаю что на все эти вопросы нельзя ответь, но МНЕ ОЧЕНЬ НАДО ЗНАТЬ.
Хоть коротко объясните(если сами знаете).
Я уже замонался С ПНИМАНИЕМ ТОГО, ЧТО ИЗ СЕБЯ ПРЕДСТОВЛЯЕТ ТЕХНОЛОГИЯ ДОСТУПА К БАЗЕ.
Я не могу понять что предстовляет из себя ODBC. Это технология доступа к базам данных?
Да, Пишут везде. Но что это конкретно? Это набор финкций для доступа к базе. Тогда получается что это библиотека?Не понимаю.
Почему ODBC называют драйвером? И почему этих драйверов очень много и все ODBC ? Не понимаю.
Что значит драйвер с набором финкций ? Как все это происходит воще ? И почему если я хочу установить связь с базой на СУБД(например SQL Server)
то говорят что она(СУДБ) тоже должна поддерживать этот драйвер ? Что вообще происходит ?
И почему при подключении через ADO меня просят выброть драйвер ? Какой драйвер, я не могу понять прои универсальном доступе к данным. И если я подключаюсь через ADO .то почему поставщик должен быть OLE BD. И что значит поставщик OLE DB?


Есть базы данных - разные, все они по разному организованы, имеют разные особенности и разные способы ображщения с окружающими. А у нас программа, мы хотим чтобы соединение с базами данных было во первых простое, во вторых по возможности универсальное. Значит получаем простую цепочку:

БД ---A---- Драйвер ----B--- программа

Рассмотрим звенья:
1) БД есть здесь нечто двоякое, или это просто набор файлов (DBase, Paradox, MS Access) или отдельная программа которая которая внутри себя хранит данные (MS SQL Server, Oracle и т.д.) и их обрабатывает
2) Драйвер - это библиотека функций которые обеспечивают 2 интерфейса: во первых (---A----) это коннект с конкретной базой данных, т.е. КАЖДАЯ база данных имеет свой драйвер, который ЗНАЕТ как говорить с этой базой данных, во вторых - интерфейс (----B---) - некий протокол, соглашение, набор функций - с помощью которых программа пользователя может говорить с драйвером - вот этот интерфейс желательно иметь одинаковый для всех баз данных, чтобы в программе для работы с разными базами данных не надо было много менять. Набор драйверов для разных баз данных, которые имеют одинаковый интерфейс (----B---), одинаковую логику построения, одинаковую архитектуру, общие файлы конфигурации и утилиты для обслуживания и называются "технологией доступа к базам данных" - ODBC, ADO, DAO, BDE, DBExpress и т.д.


Цитата
Гость hilolo, 6.12.03, 21:15
Это набор финкций для доступа к базе


Нет, то набор драйверов, для каждой базы данных, причём каждый драйвер имеет одинаковые функции для программиста, но умеет применять эти функции на разных база данных.

Цитата
Гость hilolo, 6.12.03, 21:15
Тогда получается что это библиотека?


Нет. Драйвер базы данныз - это библиотека.

Цитата
Гость hilolo, 6.12.03, 21:15
Почему ODBC называют драйвером?


Неправильно называют. Это набор драйверов. Обычно имеется ввиду "драйвер ODBC" - т.е. драйвер для доступа к базе данных, который сделан по технологии и с архитектурой ODBC, т.е. поддерживает некий стандартный набор функций, который обязан обеспечивать любой драйвер ODBC

Цитата
Гость hilolo, 6.12.03, 21:15
И почему этих драйверов очень много и все ODBC ?


Количество драйверов: в принципе каждая база данных имеет свой драйвер, но ситуация несколько осложняется тем, что иногда один драйвер может работать с несколькими типами баз данных - например DBase III и DBase IV, а драйвера для некоторых баз данных производятся разными производителями, поэтому может быть и несколько разных драйверов к одной и той же базе данных от разных компаний.

Цитата
Гость hilolo, 6.12.03, 21:15
Что значит драйвер с набором финкций ?


Библиотека функций, DLL

Цитата
Гость hilolo, 6.12.03, 21:15
И почему если я хочу установить связь с базой на СУБД(например SQL Server)
то говорят что она(СУДБ) тоже должна поддерживать этот драйвер ?


Наоборот, у Вас должен быть драйвер умеющий работать с данной СУБД

Цитата
Гость hilolo, 6.12.03, 21:15
И почему при подключении через ADO меня просят выброть драйвер ?


Потому что Ваша программа должна знать какой драйвер использовать. Программе по фиг какой драйвер использовать - они все имеют один и тот же набор функций, но вм не всё равно - если назначить неправильный драйвер, то программа он не сможет ничего получить из базы данных

Цитата
Гость hilolo, 6.12.03, 21:15
Какой драйвер, я не могу понять прои универсальном доступе к данны


Универсальный для программы, универсальность и обеспечивает выбор нужного драйвера.

Цитата
Гость hilolo, 6.12.03, 21:15
И если я подключаюсь через ADO .то почему поставщик должен быть OLE BD


поставщик может быть и ODBC. Вообще на начальных этапах можно не пудрить себе мозги терминологией и читать:

поставщик=драйвер

Цитата
Гость hilolo, 6.12.03, 21:15
И что значит поставщик OLE DB?


поставщик=драйвер

Но вот один момент: поповоду постовщик= драйвер, если это так то почему при подключении к базе мне предлогают например OLE DB provider for ODBC driver. Т.е я буду подключаться с ODBC драйвером, но к чему, к другому драйвеуру.Или имеется ввиду что база поддерживает OLE DB драйвер ? И что тогда значит база поддерживает драйвер ? Как я понял например при подключении через ODBC драйвер к простой базе *.mdb база ничего не поддерживает. Т.е
(База)---(А)---Драйвер---(Б) и со стороны базы никокого драйвера нет.


Просто ADO имеет возможности использовать ODBC драйвера, сама оставаясь над ними высокоуровневой настройкой, т.е. в нашей схеме:

БД ---A---- Драйвер ODBC ----B--- ADO ---- программа

Это плохой путь программирования - не эффективный и очень медленный. Он нужен только для совместимости - для использования ADO для доступа к античным базам данных. Для доступа к MS Access используйте ADO провайдер "Jet", так как со всеми другими вас ждут большие и малые проблемы в большом количестве...

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)