Нижний Новгород
ГЛАВНАЯ НОВОСТИ БАНКИ ГОСТИНИЦЫ КАФЕ АФИША НОВОСТИ IT КОНСУЛЬТАЦИИ РЕЦЕПТЫ
27 мая 2009 г.

Использование ADO для доступа к базам данных MS Access, xBase и Paradox в Delphi



Для того чтобы было понятно, для чего необходим переход от BDE к ADO, напишу небольшое пояснение. Моя работа связана с написанием оболочки для создания ГИС - геоинформационных систем. Таким образом, из красивой карты необходимо получить некоторые атрибутивные данные по каждому размещенному на карте объекту. Атрибутивные таблицы при этом не имеют какой-либо установленной структуры, лишь несколько предустановленных полей, невидимых пользователю, но используемых для записей в базе данных и связи объектов на карте.

Таким образом для хранения атрибутивной информации специальной был выбран формат MS Access, положительным моментом которого являлось хранение всех таблиц в одном файле, а также отсутствие требования включенного сервера. Ко всему прочему мне была необходима связь с файлами форматов dbf и db, используемых для загрузки и выгрузки данных БД. Так для написания программы была взята Delphi 4, в то же время для подключения к файлам базы данных применялась BDE. Такая ситуация устраивала всех, однако через некоторый период времени появились некоторые важные обстоятельства:

Появился MS Access 2000, с которым BDE категорически отказался работать. После продолжительных поисков информации, оказалось, что ей практически никто не владеет. Однако была найдена одна интересная особенность в поведении потоков BLOB под управлением Windows NT 4. Если необходим доступ к BLOB, а также полям таблиц в БД формата MS Access 97, то можно произвести подключение через BDE к MS Access 97. Впоследствии оказалось, что написанные таким образом исходники pascal, работают не всегда и не везде. В большинстве случаев коды отказываются корректно выполнять свои функции. Именно это и послужило причиной перехода с BDE на ADO.

В результате продолжительной работы над этим вопросом, я пришел к выводу, что обычный программист Pascal и Microsoft по разному смотрят на фразу «Обеспечивается доступ к данным». Так программист предполагает, что здесь предполагается просмотр данных и редактирование. Что же под такой фразой предполагает Microsoft невозможно догадаться, но на деле оказывается, что данные можно только просмотреть.

Для работы с ADO была взята самая последняя на тот момент версия с сайта Microsoft - ADO 2.6. Но и тут оказалось не все так просто. Для начала мы создали таблицу, в которую будут вноситься некоторые данные. Во время попытки использования данной таблицы, она начала требовать с пользователя какой-то ключ, хотя его-то мы и не задавали.

Далее мы попробовали сделать тоже самое, но в MS Access, все получилось отлично. Отсюда вывод, что в ADO мы делаем что-то не так. После долгих поисков в ADO SDK, нашлось некоторое объяснение: ADO предполагает, что в самой таблице не будет повторяющихся записей.

Для решения проблемы возникла идея добавления дополнительного поля, где каждая запись будет однозначно определена – своего рода внутренний идентификатор. Не думая о его содержимом, мы сделали автоинкрементное поле, на которое и создали первичный ключ. На первый взгляд все работало. Далее мы добавили еще несколько подобных полей. В результате увидели замечательную картину: содержимое Internal_ID для каждой записи было равно нулю, хотя такого просто не должно быть. Только закрытие и новое открытие таблицы приводит к нужному результату.

Далее мы попробовали сделать тоже самое в MS Access 2000 с помощью Pascal, в котором все работало отлично. В результате можно было сделать однозначный вывод: Microsoft активно, причем в добровольно-принудительном порядке, используя все доступные средства, пытается заставить переходить на свои новые программы.




Все новости рубрики новости телекоммуникаций за сегодня




Если Вы хотите разместить новости или пресс-релизы своей компании в разделе "Новости телекоммуникаций и IT", свяжитесь с редактором по адресу: diza[собачка]innov.ru.
При любом использовании материалам обязательна гиперссылка вида:


Яндекс.Метрика
© 1996-2012 INNOV.RU (Иннов.ру), ООО «Иннов», г. Нижний Новгород
Свидетельство РОСКОМНАДЗОРА ИА № ТУ 52-0604 от 29 февраля 2012 г.
Дизайн-студия «Иннов» - продвижение и cоздание сайтов