MySQL & mSQL



              

DBI - часть 3


$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<<END_OF_HTML; <H1>$server</h1>

Ha Sserver , по-видимому, не запущен сервер mSQL. </body></html> END_OF_HTML

exit(0); }

print header, start_html('title'=>" Данные по $host",




Содержание  Назад  Вперед