MySQL & mSQL



DBI.pmAPI - часть 5


Пример

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 устанавливается ошибка.




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