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

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

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

Библиотека :: Компьютеры и Программирование :: Начинаем изучать MySQL
<<-[Весь Текст]
Страница: из 157
 <<-
 
Пример
use DBI;
my $db1 = DBI->connect('DBI: mSQL:mydata',undef,undef);
# Теперь $db1 представляет соединение с базой данных 'mydata'на локальном
# сервере mSQL.
my $db2 = DBI->connect( 'DBI:mysql:mydata:myser-ver.com','me','mypassword');
# Теперь $db2 представляет соединение с базой данных 'mydata' сервера MySQL 
# 'myserver.com' через порт по умолчанию.
# При соединении использовались имя пользователя 'те' и пароль 'mypassword'. 
my $db3 = DBI->connect('DBI:mSQL:mydata',undef,undef, {
RaiseError => 1 }); 
# Теперь $db3 - такое же соединение, как $db1, за исключением того, что
# установлен атрибут 'RaiseError'.
DBI::data_sources
@data_sources = DBI->data_sources($dbd_driver);
DBI: :data_sources принимает в качестве аргумента имя модуля DBD и возвращает 
все имеющиеся для этого драйверы базы данных в форма- " те, пригодном к 
использованию в качестве источника данных функцией DBI::connect . Программа 
заканчивает свое выполнение с ошибкой, если задано неверное имя драйвера DBD. В 
текущих версиях модулей Msql-Mysql драйвер для mSQL называется 'mSQL', а для 
MySQL -'mysql'.
Пример
use DBI;
my §msql_data_sources = DBI->data_sources('mSQL');
my @mysql_data_sources = DBI->data_sources('mysql');
# Должны быть установлены DBD::mSQL и DBO::mysql, иначе
# выполнение программы прекратится.
print "mSQL databases:\n" . join("\n",@msql_data_sources) , "\n\n"; 
print "MySQL databases:\n" . join("\n",@mysql_data_sources) . "\n\n";
DBI::do
$rows_affected = $db->do($statement);
$rows_affected = $db->do($statement, \%unused); 
$rows_affected = $db->do($statement, \%unused, @bind_values);
DBI: : do непосредственно выполняет SQL-команду, не являющуюся командой SELECT, 
и возвращает число измененных строк. Этот способ быстрее, чем пара DBI: 
:prepare/DBI: :execute , требующая два вызова функции. Первый аргумент - сама 
команда SQL. Второй аргумент не используется в DBD::mSQL и DBD::mysql, но для 
других модулей DBD может содержать ссылку на хэш атрибутов. Последний аргумент 
-массив значений для подстановки в команду вместо меток-заместителей '?'. 
Подстановка происходит слева направо. Дополнительно DBI: : do автоматически 
заключит подставляемые строковые значения в кавычки.
Пример
use DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $rows_affected = $db->do("UPDATE mytable SET name='Joe' WHERE name='Bob"');
print "$rows_affected Joe заменены на Bob's\n";
my $rows_affected2 = $db->do("INSERT INTO mytable (name) VALUES (?)", {}, 
("Sheldon's Cycle"));
# После заключения в кавычки и подстановки
# серверу базы данных посылается команда
#INSERT INTO mytable (name) VALUES ('Sheldon's Cycle')
DBI-disconnect
$result = $db->disconnect;
DBI: : disconnect отсоединяет описатель базы данных от сервера баз данных. Для 
mSQL и MySQL в этом обычно нет необходимости, поскольку эти базы данных не 
поддерживают транзакций, и неожиданное отсоединение не причинит вреда. Однако 
от баз данных, поддерживающих транзакции, нужно отсоединяться явным образом. 
Поэтому, чтобы получить переносимую программу, нужно всегда отсоединяться от 
базы данных перед выходом. При ошибке во время отсоединения возвращается 
ненулевое значение, и в $DBI: :errstr устанавливается ошибка.
Пример
use DBI;
my $db1 = DBI->connect( 'DBI:mSQL:mydata',undef,undef);
my $db2 = OBI->connect('DBI:mSQL:mydata2',undef,undef);
$db1->disconnect;
# Соединение 'mydata' разорвано. Соединение с 'mydata2'
# продолжает действовать.
DBI::dump_results
$neat_rows = DBI::dump_results($statement_handle); 
$neat_rows = DBI::dump_results($statement_handle, Smaxlen); 
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep); 
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep,
$field_sep); 
$neat_rows = DBI::dump_results($statement_handle, $maxlen, $line_sep,$field_sep,
 $file_handle);
DBI: :dump_results выводит содержание описателя команды в удобном и 
упорядоченном виде, применяя к каждой строке DBI: :neat_string . Функцию удобно 
использовать для быстрой проверки результатов запроса во время разработки 
программы. Единственный обязательный аргумент - описатель команды. Второй 
аргумент, если имеется, задает максимальный размер полей в таблице, по 
 
<<-[Весь Текст]
Страница: из 157
 <<-