Работа с сервером баз данных с различными СУБД через ODBC
Термин ODBC(сокращение от «Open Database Connectivity», то есть «открытая архитектура баз данных») представляет собой интерфейс прикладных программ (API), позволяющий использовать общий набор абстрактных функций для работы с разными типами баз данных. Преимущества подобного подхода очевидны – приложение может выполняться базами данных с различными СУБД т.е не зависить от типа СУБД. Работа с сервером баз данных через ODBC возможна лишь в том случае, если этот сервер является ODBC-совместимым. Другими словами, для него должны существовать драйверы ODBC. Хотя стандарт ODBC, разработанный компанией Microsoft, стал открытым стандартом, он в основном используется для работы с СУБД на платформе Windows; впрочем, драйверы ODBC также существуют и на платформе Linux. Приведем ссылки на драйверы для некоторых популярных СУБД:
Automation Technologies: http://www.odbcsdk.com;
Easysoft: http://www.easysoft.com/products/oob/main.pHTML;
MySQL (MyODBC): http://www.mysql.com;
OpenLinkSoftware: http://www.openlinksw.com.
Прежде чем начать работать с базами данных следует создать источник данных ODBC. Командой Пуск//Панель управления/Администрирование/Источники данных ODBC (32) запускается Администратор источников данных (рисунок. 2.1). Используя страницу Пользовательский DSN (источники доступны только текущему пользователю), Системный DSN (источники доступны всем пользователям) или Файловый DSN (файлы), можно установить доступ к конкретному файлу (базе данных, электронной таблице, текстовому файлу): указать DSN‑имя (для ссылки в программах), тип драйвера, пароль, имя пользователя и другую дополнительную информацию. Описания DSN‑источников хранятся в реестре Windows, файловых ‑ в текстовых файлах с расширением DSN. Кнопками Добавить, Удалить и Настройка можно добавлять, удалять и изменять описания источников.
Рис. 2.1 - Окно Администратора источников данных
Функции ODBC в РНР, обычно называемые общими функциями ODBC, не только обеспечивают типовую поддержку ODBC, но и позволяют работать с некоторыми СУБД, обладающими собственным API, через стандартный ODBC API. К числу последних относятся следующие СУБД: Adabas D; IODBC; IBM DB2; Solid; Sybase SQL Anywhere.
В настоящее время существует около 40 общих функций ODBC (http://www.php.net/manual).
Приведем основные функции.
int odbc_connect(string источник_данных, string имя_пользователя, string пароль [, int тип_курсора]) - установить с ней связь c базой данных. В параметрах имя_пользователя и пароль, передаются имя пользователя и пароль, необходимые для подключения к источнику данных. Необязательный параметр тип_курсора предназначе'н для устранения проблем, возникающих при работе с некоторыми драйверами ODBC. Он может принимать одно из четырех возможных значений: SQL_CUR_USE_IF_NEEDED; SQL_CURSOR_USE_ODBC; SQL_CUR_USE_DRIVER; SQL CUR DEFAULT.
void odbc_close([int идентификатор_соединения]) – закрыть соединение, чтобы освободить все ресурсы, используемые открытым соединением. В параметре идентификатор_соединения передается идентификатор открытого соединения
Пример.
$connect =obdc_connect("myAccessDB", "user", "secret")or exit( "Ошибка при соединении");
…odbc_close ($connect);
int odbc_prepare(int идентификатор_соединения , string запрос) - перед непосредственной обработкой запрос необходимо «подготовить». В параметре идентификатор_соединения передается идентификатор соединения, возвращаемый функцией odbc_connect( ). В параметре запрос передается текст запроса, который должен быть выполнен сервером. Если запрос не может быть выполнен, функция возвращает FALSE; в противном случае возвращается идентификатор результата, в дальнейшем используемый при вызове функции odbc_execute( ).
int odbc_execute(int идентификатор результата [, array параметры]) - запрос, подготовленный функцией odbc_prepare, выполняется). В параметре идентификатор_результата передается идентификатор результата, возвращаемый при успешном вызове odbc_prepare( ). Необязательный параметр передается лишь в том случае, если при вызове функции передаются дополнительные данные.
Пример.
$connect = @obdc_connect("myAccessDB", "user", "secret")
or exit("Ошибка при подключении к базе данных");
$query = "UPDATE customers SET cust_id = \"Milano, Inc.\"WHERE cust_id \"2000cu\"";
$result = odbc_prepare($connect, $query) or exit("Ошибки в запросе!");
$result = odbc_execute($result) or exit("Ошибки при выполнении запроса на обновление!");
odbc_close($connect);
int odbc_exec(int идентификатор_соединения , string запрос) - функция odbc_exec( ) объединяет odbc_prepare( ) и odbc_execute( ). В параметре идентификатор_соединения передается идентификатор соединения, возвращаемый функцией odbc_connect( ). В параметре запрос передается текст запроса, который должен быть выполнен сервером. Если запрос не может быть выполнен, функция возвращает FALSE; в противном случае возвращается идентификатор результата, используемый при последующих вызовах функций:
Пример.
$connect =obdc_connect("myAccessDB", "user", "secret")
or exit("Ошибка при подключении к базе данных ");
$query = "SELECT * FROM customers";
$result = odbc_exec($connect, $query) or exit("Ошибки при выполнении запроса!");
odbc_close($connect);
int odbc_result_all(int идентификатор_результата [, string формат_таблицы]) - форматирует и отображает все записи для идентификатора результата, полученного при вызове odbc_exec( ) или odbc_execute( ). В параметре идентификатор_результата передается идентификатор результата, возвращаемый при успешном вызове odbc_exec( ) или odbc_execute( ). В необязательном параметре формат_таблицы передаются характеристики таблицы HTML.
Пример.
($connect =obdc_connect("myAccessDB", "user", "secret")
or exit("Ошибка при подключении к базе данных ");
$query = "SELECT * FROM customers";
$result = odbc_exec($connect, $query) or exit("Ошибки при выполнении запроса!");
odbc_result_all($result, "BGCOLOR='#c0c0c0' border='1' ");
odbc_close($connect);
?>
В результате выполнения этого примера содержимое таблицы customers будет выведено в таблице на светло-сером фоне с рамкой толщиной 1.
int odbc_free_result(int идентификатор_результата) - освобождение всех ресурсов, связанных с завершенными операциями. В параметре функции передается идентификатор результата ($result), который больше не будет использоваться в программе. Все ресурсы памяти автоматически освобождаются по завершении сценария; таким образом, вызов функции odbc_free_result( ) необходим лишь для очень больших запросов, расходующих очень большие объемы памяти.
Дата добавления: 2015-04-15; просмотров: 1144;