Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

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

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: Начинаем изучать MySQL
<<-[Весь Текст]
Страница: из 157
 <<-
 
нашем случае «mysql» или «mSQL» (обратите внимание на точное использование 
регистра). В первом варианте создается соединение с сервером MySQL на локальной 
машине через сокет Unix. Это наиболее эффективный способ связи с базой данных, 
который должен использоваться при соединении на локальном сервере. Если указано 
имя узла, оно используется для соединения с сервером на этом узле через 
стандартный порт, если только не задан и номер порта. Если при соединении с 
сервером MySQL вы не указываете имя пользователя и пароль, то пользователь, 
выполняющий программу, должен обладать достаточными привилегиями в базе данных 
MySQL. Для баз данных mSQL имя пользователя и пароль не должны указываться.
В Perl 5 используются два соглашения по вызову модулей. В 
объектно-ориентированном синтаксисе для ссылки на метод определенного класса 
используется символ стрелки «->» (как в DBI->connect). Другой метод - 
использование непрямого синтаксиса, в котором за именем метода следует имя 
класса, а затем - аргументы. В последнем примере метод connect следовало бы 
записать как connect DBI 'DBI:mysql:mydata', "me', ' mypass . В ранних версиях 
Msql.pm использовался исключительно непрямой синтаксис, и требовалось 
придерживаться метода использования заглавных букв, обусловленного mSQL С API. 
Поэтому значительная часть старого кода MsqlPerl содержит строки типа SelectDB 
$dbh ' test' там, где можно было бы написать проще: $dbh->selectdb(' test') . 
Если вы еще не догадались, то сообщаем, что мы неравнодушны к 
объектно-ориентированному синтаксису, хотя бы потому, что использование стрелки 
делает ясной связь между классом и методом.
Как только вы соединились с сервером MySQL или mSQL, описатель базы данных - во 
всех примерах этого раздела $dbh - становится шлюзом к базе данных. Например, 
так готовится запрос SQL:
$dbh->prepare($query);
При работе с mSQL для одного описателя базы данных можно одновременно выбрать 
только одну базу данных, это ограничение накладывается сервером mSQL. Однако в 
любой момент можно сменить текущую базу данных, повторно вызвав connect . При 
работе с MySQL можно включать в запрос другие базы данных, явно указывая их 
имена. Кроме того, и в MySQL, и в mSQL при необходимости одновременного доступа 
к нескольким базам данных можно создать несколько описателей базы данных и 
использовать их совместно.
В главе 21 «Справочник по Perl», описаны все методы и переменные, содержащиеся 
как в DBI, так и в Mysql.pm и Msql.pm.
Для иллюстрации использования DBI рассмотрим следующие простые программы. В 
примере 10-1 datashow.cgi принимает в качестве параметра имя узла; при 
отсутствии параметра принимается имя «local-host». Затем программа выводит 
список всех баз данных, имеющихся на этом узле.
Пример 10-1. Программа CGI datashow.cgi показывает все базы данных, имеющиеся 
на сервере MySQL или mSQL
#!/usr/bin/perl -w
use strict;
use CGI qw( standard);
use CGI::Carp;
# Использовать модуль DBI use DBI; CGI::use_named_parameters(1);
my ($server, $sock, $host);
my $output = new CGI;
$server = param('server') or Sserver = '';
# Подготовить DBD-драйвер для MySQL
my $driver = DBI->install_driver('mysql');
my @databases = $driver->func($server, '_ListDBs');
# Если параметр @databases неопределен, предполагаем,
# что на этом узле не запущен
# сервер MySQL. Однако это может быть вызвано
# другими причинами. Полный текст сообщения об ошибке
# можно получить, проверив $DBI::errmsg. 
if (not @databases) {
print header, start_html('title'=>"Данные no Sserver", 'BGCOLOR'=>'white'); 
print<$server
Ha Sserver , по-видимому, не запущен сервер mSQL.  END_OF_HTML
exit(0); }
print header, start_html('title'=>" Данные по $host",
'BGCOLOR'=>'white'); print <$host

Соединение с $host на сокете $sock.

Базы данных:

    END_OF_HTML foreach(@databases) { print "
  • $_\n"; } print < HTML exit(0) В примере 10-2 tableshow.cgi принимает в качестве параметров имя сервера базы данных (по умолчанию «localhost») и имя базы данных на этом сервере. Затем программа показывает все таблицы, имеющиеся в этой базе данных.
 
<<-[Весь Текст]
Страница: из 157
 <<-