dbf perehod sql 

Переход с файл-серверных программ в среду SQL клиент-сервер 

Исправно работающая программа на Clipper или Foxpro - довольно старая но очень большая, со множеством форм, отчетов и т.д. Разрабатывать новую, на современной платформе очень долго и затратно. Вы можете увеличить надежность баз данных, особенно при работе в сетях, без больших затрат, перенеся DBF базы в клиент серверную архитектуру. Обычные файловые СУБД не поддерживают целостность баз данных и не имеют механизмов управления трансакциями, что существенно затрудняет обеспечение логической непротиворечивости информации при сбоях оборудования и программ.


Возросшим требованиям удовлетворяет архитектура клиент-сервер, основанная на выделении одного узла сети под сервер БД с реляционной СУБД, поддерживающей максимальный уровень надежности хранения, ее актуальность и достоверность. Однако методика программирования на непроцедурном языке SQL не согласуется с опытом разработки программ для СУБД.

Не стоит забывать, что накоплен большой опыт работы на системах семейства xBase, в частности, Clipper или FoxPro. Разработано большое число различных программ, которые внедрены и успешно работают многие годы. При интеграции отдельных автоматизированных рабочих мест в общие корпоративные сети было бы желательно сохранить не только постановку задачи и применяемые алгоритмы, но и собственно рабочие программы.

Предлагаем несколько способов к интеграции и адаптации файл-серверных (DBF) приложений к клиент-серверной архитектуре (SQL):

  • связь с сервером БД через открытый протокол ODBC;

  • использование библиотек доступа к серверам БД;

  • укрупнение файл-серверных приложений.

Чтобы оценить возможности этих методов, рассмотрим их несколько подробнее.

Библиотеки доступа к серверам приложений удобно применять для адаптации файл-серверных программ, построенных на системах программирования типа Clipper, FoxPro или Clarion.

Система управления записями Clarion достаточно легко связывается с сервером баз данных Btrieve через библиотеку доступа. Однако стоит заметить, что Btrieve не является SQL-сервером БД, что затрудняет программирование с использованием этого средства.

Программы, написанные на Clipper, можно адаптировать с помощью программного интерфейса с выбранным сервером БД. Для примера можно привести библиотеку интерфейса Clipper-Oracle.

Программный интерфейс реализован в виде библиотеки функций, доступных для их использования в прикладных программах, написанных на языке Clipper, и выполняющих все необходимые операции над базой данных Oracle. Функции написаны на языках Clipper и Си.

Можно выполнять такие операции над таблицами базы данных системы Oracle, с помощью функций этой библиотеки:

  • подключиться к системе Oracle;

  • вставка в базу данных новой строки;

  • удаление существующей строки;

  • Изменение содержимого полей существующей строки;

  • выполнить поиск строк по заданному точному значению полей;

  • выполнить различный поиск строк по заданному шаблону значений полей;

  • выполнить поиск строк по их относительному номеру в заданной группе;

  • блокировать и разблокировать таблицы базы;

  • обрабатывать транзакции, в том числе есть возможность установки контрольных точек внутри транзакции.

В то же время для всех этих операций (кроме обработки транзакций) имеются соответствующие аналоги в системе Clipper, и все операции с базой данных системы Clipper могут быть реализованы с помощью функций предлагаемой библиотеки.

Кроме того, есть возможность непосредственного использования языка SQL, который является основным языком данных не только в Oracle, но в большинстве других развитых СУБД.

Версия языка SQL, реализованная в Oracle, ориентированная на стандарт этого языка и содержит ряд ограничений. Например, оператор Fetch позволяет перемещаться по результирующей таблицы только в одном направлении, исключая возвращение назад. Функции библиотеки снимают эти ограничения.

С помощью функций библиотеки можно обрабатывать таблицы Oracle всех типов, в том числе виртуальные таблицы, Групповые таблицы, таблицы с индексами и без индексов. При этом обеспечивается преобразование форматов данных Oracle в форматы данных Clipper и наоборот.

Единицей обмена между приложением и базой данных есть строка таблицы, с точки зрения Clipper является массивом. Каждый элемент массива соответствует одному полю таблицы. Аналогично представляются ключи и поля поиска.

В состав библиотеки входят следующие функции:

INIT ()          подключение к Oracle;
OPEN ()       открытие таблицы;
INSERT ()    добавление строки;
UPDATE ()  корректировка строки;
DELETE ()   удаление строки;
SELECT ()   поиск строки;
NEXT ()       чтение следующей строки;
SET ()           чтение строки по относительному номеру;
SKIP ()         пропуск строк;
FILTER ()    выбор строк по условию;
GETIND ()  сохранение индекса;
SETIND ()   установка индекса;
COMMIT () конец транзакции;
SAVE ()       установка контрольной точки;
ROLL ()       откат транзакции;
LOCK ()      блокировка таблицы;
SQL ()         выполнение оператора SQL;
CLOSE ()    закрытие таблицы;
STOP ()       отключение от Oracle.

Данные функции не препятствуют использованию собственных средств управления данными Clipper, что позволяет совместно обрабатывать разнородные базы данных. Так, в качестве центральной может использоваться база данных Oracle, а в качестве локальной может использоваться база данных Clipper на персональном компьютере пользователя.

XBase - является "коллекция спецификаций, программ, утилит и С ++ библиотека классов для работы с Xbase файлов данных и индексов. То есть, если вы имеете дело с Dbase совместимыми базами, такими как Dbase, Clipper, FoxPro и т.д., это тоже библиотека для Вас. Он поддерживает DBF файлы, индексные файлы Dbase в NDX, NTX файлы Clipper в DBT, mem файлы и другие.

В состав интерфейсных средств включен специальный модуль для автономной отладки прикладных программ без системы Oracle. Этот модуль выполняет все функции интерфейса на DBF-файлах, что позволяет разрабатывать и полностью отлаживать программы, используя только систему Clipper на обычном персональном компьютере. Кроме того, эта возможность позволяет разрабатывать прикладные программы сразу в двух вариантах - сетевом и автономном.

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

Интерфейс прикладного программирования ODBC API предоставляет общие методы доступа на основе языка баз данных SQL как к реляционным, так и к нереляционным (ISAM) источникам данных.

Наиболее распространенный стандарт ANSI SQL  включает спецификацию интерфейса на уровне вызовов (CLI - Call-Level Interface), на которую опирается ODBC для обеспечения доступа и работы с данными во многих системах управления базами данных. Интерфейс CLI соответствует требованиям, установленным в 1996 году комитетом SQL Access Group и определяющим общий синтаксис SQL и интерфейса API. Иметь общий метод доступа к источникам данных удобно потому, что тогда база данных на сервере становится прозрачной для приложений, которые написаны в соответствии со специфицированным уровнем совместимости ODBC.

Интерфейс ODBC API реализован как набор расслоенных DLL-функций для Windows. Динамическая библиотека ODBC.DLL - это основная библиотека управления драйверами ODBC, которая содержит функции вызовов специализированных драйверов для разных поддерживаемых системой баз данных. Каждый драйвер совместим со своим уровнем CLI и относится к одной из двух категорий: одноуровневые или многоуровневые драйверы.

Одноуровневые драйверы предназначены для использования при работе с теми источниками данных, которые не могут быть прямо обработаны с использованием ANSI SQL. Обычно это локальные базы данных на персональных компьютерах, такие как dBase, Paradox, FoxPro и Excel. Драйверы, соответствующие этим базам данных, производят компиляцию ANSI SQL в наборы инструкций более низкого уровня, которые непосредственно обрабатывают составляющие базу данных файлы.

Многоуровневые драйверы используют сервер РСУБД для обработки SQL-предложений и предназначены для работы в среде клиент-сервер. Помимо обработки ANSI SQL, они также могут поддерживать и собственные конструкции конкретной РСУБД, поскольку ODBC может без трансляции передавать SQL-операторы источникам данных (механизм "passthrough"). Драйверы ODBC для баз данных, поддерживаемым в технологии клиент-сервер реализованы для Oracle V 6.0 и Oracle V 7, а также Informix, Microsoft и Sybase SQL Server, Rdb, DB2, Ingres, HP/Image и An SQL. Драйверы можно приобрести в фирмах Microsoft, Intersolv, Visigenic и Openlink, причем только Microsoft и Intersolv выпускают и 32-х, и 16-ти разрядные драйверы.

Необходимо осуществить 4 шага для осуществления запроса данных через ODBC API.

  • Шаг 1 - установление соединения. Первый шаг состоит в размещении указателей (handle) среды ODBC, которые выделяют оперативную память под ODBC драйверы и библиотеки. Затем происходит выделение памяти для указателей соединения, и соединение устанавливается.

  • Шаг 2 - выполнение оператора SQL. Выделяется указатель оператора, локальные переменные связываются со столбцами в SQL-выражении (это необязательное действие), и выражение представляется главному ODBC-драйверу для обработки.

  • Шаг 3 - извлечение данных. Перед извлечением данных возвращается информация о результирующем наборе, в частности, число столбцов в наборе. Исходя из этого числа, результирующий набор помещается в буфер записей, выполняется цикл его просмотра и содержимое каждого столбца помещается в соответствующую локальную переменную. Этот шаг необязателен, если используется связывание столбцов с локальными переменными.

  • Шаг 4 - освобождение ресурсов. После того, как данные получены, ресурсы освобождаются путем вызова функций освобождения указателей оператора, соединения и среды. Указатели оператора и соединения могут быть использованы в процессе обработки. 

Чтобы настроить диспетчер соединений для подключения к Dbase или другой файл DBF

    1. Добавить новый диспетчер соединений OLE DB для упаковки. Для получения дополнительной информации см Добавить, Удалить или Дайте диспетчер подключений в пакет.
    2. На Подключение странице диспетчера подключений диалоговом окне выберите Родной OLE DB \ Microsoft Jet 4.0 OLE DB Provider как поставщика.
    3. При работе с DBF файлов, папка представляет собой базу данных, и отдельные файлы DBF ​​представляют таблицы. Поэтому имя файла базы данных текстовое поле должно содержать путь к папке, где находится файл DBF проживает, и не должна включать в себя саму имя файла. Вы можете ввести или вставить в пути к папке, или вы можете использовать Обзор кнопку, чтобы выбрать DBF файл, а затем удалить имя файла в конце пути к папке.
    4. На  странице диспетчера подключений диалоговом окне введите Dbase III, DBase IV, или Dbase5,0, в соответствующих случаях, в качестве значения расширенные свойства.
    5. Нажмите Test Connection для проверки значения, которые вы ввели. Вы должны увидеть сообщение "Проверка соединения удалось." Нажмите OK, чтобы закрыть окно сообщения.
    6. Нажмите OK, чтобы сохранить конфигурацию для диспетчера соединений.
    7. Чтобы использовать диспетчер соединений в потоке данных пакета, выберите источник OLE DB или пункт назначения и настроить его на использование диспетчера соединений, созданный с помощью предыдущих этапов.