Платформы корпоративных информационных систем

         

Программа CGI datashow.cgi



Пример 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",

'BGCOLOR'=>'white'); print <<END_OF_HTML; <H1>$host</h1>

<P>

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

<p>

Базы данных:<br>

<UL>

END_OF_HTML

foreach(@databases) {

print "<LI>$_\n"; }

print <<END_OF_HTML;

</ul>

</body></html>

HTML

exit(0)

В примере 10-2 tableshow.cgi принимает в качестве параметров имя сервера базы данных (по умолчанию «localhost») и имя базы данных на этом сервере. Затем программа показывает все таблицы, имеющиеся в этой базе данных.

Пример 10-2. Программа CGI tableshow.cgi выводит список всех таблиц в базе данных

#!/usr/bin/perl -w

use strict;

use CGI qw(:standard);

use CGI::Carp;

# Использовать модуль Msql.pm use DBI; CGI::use_named_parameters(1);

my ($db);

my $output = new CGI;

$db = param('db')'or die("He указана база данных!");

# Connect to the requested server.

my $dbh = DBI->connect("DBI:mysql:$db;$server", undef, undef);

# Если не существует $dbh, значит, попытка соединения с сервером
# базы данных не удалась. Возможно, сервер не запущен,

# или не существует указанной базы данных, if (not $dbh) {

print header, start_html('title'=>"Данные по $host => $db", 'BGCOLOR'=>'white');

print <<END_OF_HTML; <H1>$host</h1> <H2>$db</h2>

Попытка соединения не удалась по следующей причине:<BR> $DBI::errstr

</body></html>

END_OF_HTML

exit(0); }

print header, start_html('title'=>"Данные по $host => $db", 'BGCOLOR'=>'white'); print <<END_OF_HTML; <H1>$host</h1> <H2>$db</h2>

<р>

Таблицы:<br>

<UL>

END_OF_HTML

# $dbh->listtable возвращает массив таблиц,

# имеющихся в текущей базе данных.

my ©tables = $dbh->func( '_ListTables' );

foreach (@tables) {

print "<LI>$_\n"; }

print <<END_OF_HTML; </ul>

</body></html> END_OF_HTML

exit(0);

И наконец, пример 10-3 показывает, как вывести все сведения о некоторой таблице.



Содержание раздела