|
|
|
@arr = @{$sth->name}; | Возвращает массив имен столбцов |
@arr = @{$sth->length}; | Возвращает массив длин столбцов |
$value = $sth->numfields; | Возвращает количество столбцов в таблице |
@arr = @{$sth->type}; | Массив MySQL типов |
@arr = @{$sth->is_num}; | Массив 0 и 1, где 1 указывает что столбец числовой |
@arr = @{$sth->is_blob}; | Массив 0 и 1, где 1 указывает что столбец - blob |
@arr = @{$sth->is_not_null}; | Массив 0 и 1, где 1 указывает что столбец - не NULL |
Выполнить запрос.
СИНТАКСИС:
sth = $dbh->Query($sql_statement);
ОПИСАНИЕ:
Эта функция позволяет Вам посылать запрос базе данных. Вы должны использовать FetchRow, чтобы получить результат.
ПРИМЕР:
$sth = $dbh->Query("SELECT * FROM Widget_Table WHERE widget_id = 1") or die $Mysql::db_errstr; $foo = $record[0]; $bar = $record[1]; }
Хорошая идея - всегда проверить ошибки. В этом примере такой проверкой занимается блок "or die..." оператора Query.
Список доступных баз данных.
СИНТАКСИС:
arr = $dbh->ListDBs;
ОПИСАНИЕ:
ListDBs возвращает массив, который содержит один элемент для имени каждой базы данных, управляемой MySQL.
ПРИМЕР:
@dbs = $dbh->ListDBs; # Возвращает массив имен баз данных. $count = $#dbs; # Вычисляет сколько элементов. for ($i=0;$i<=$count;$i++) { print(" ".$dbs[$i]."\n"); }
Список таблиц, доступных в базе данных.
СИНТАКСИС:
@arr = $dbh->ListTables;
ОПИСАНИЕ:
Возвращает массив с одним элементом для каждого имени таблицы в базе данных. Вы должны были, определить базу данных при вызове Connect или SelectDB.
ПРИМЕР:
@tables = $dbh->ListTables; # Assumes that $dbh points # to a valid database $count = $#tables; # Figure out how many elements. for ($i=0;$i<=$count;$i++) { # Print out the table names. print(" ".$tables[$i]."\n"); }
Возвращает массив, содержащий один столбец, состоящий из значений.
СИНТАКСИС:
@arr = $sth->FetchCol($col);
ОПИСАНИЕ:
Возвращает массив значений для столбца номер $col. FetchRow возвращает следующую строку результата запроса. FetchCol возвращает весь одиночный столбец результата запроса.
Обратите внимание, что эта функция сбросит текущий указатель строки на конец таблицы; вы должны использовать DataSeek(0), чтобы переустановить его.
Возвращает результат запроса.
СИНТАКСИС:
%hash = $sth->FetchHash;
ОПИСАНИЕ:
Возвращает ассоциативный массив, содержащий следующую строку, полученную с сервера.
Возвращает строку результатов.
СИНТАКСИС:
@arr = $sth->FetchRow;
ОПИСАНИЕ:
Возвращает массив значений следующей строки, полученной с сервера.
Позиционируется на произвольную позицию в данных.
СИНТАКСИС:
DataSeek $sth $row_number;
ОПИСАНИЕ:
Дает возможность Вам определить смещение в данных, связанное с операторным дескриптором. Следующий вызов FetchRow возвратит соответствующую строку (первая строка имеет смещение = 0).
Некоторых символов нужно избежать прежде, чем двоичные строки могут быть вставлены в базу данных MySQL. MySQL perl API обеспечивает следующую функцию, чтобы делать это автоматически.
СИНТАКСИС:
$scaler = $dbh->quote($binary_string)
ОПИСАНИЕ:
Конвертирует строку: пропускает все символы ' и \, а также конвертирует \0 и \n.
Всякий раз, когда обработчик, который обеспечивает доступ к базе данных, обрабатывает потерянное значение, Mysql выбирает соответствующее действие (освобождает результат или закрывает подключение к базе данных). Так, если Вы хотите освободить результат или закрыть подключение, Вы можете делать одно из следующих действий:
Теперь пересмотрим вышеупомянутые методы в отношении метаданных.
Дескриптор базы данных
Как упомянуто выше, Вы получаете дескриптор базы данных с помощью:
$dbh = Connect Mysql $host, $database;
Дескриптор базы данных хранит сведения о хост-имени сервера, его порте и имени базы данных, с которой установлена связь. Эти три значения можно получить так:
$scalar = $dbh->sock; $scalar = $dbh->host; $scalar = $dbh->database;
База данных не определена, если связь установлена без аргументов или только с одним аргументом.
Операторный дескриптор
Два конструктора возвращают операторный дескриптор:
$sth = ListFields $dbh $table; $sth = Query $dbh $sql_statement;
$sth хранит все метаданные, предоставляемые API:
$scalar = $sth->affected_rows; | Сколько записей вставлено или изменено. |
$scalar = $sth->info; | Статистика о предыдущих запросах ALTER TABLE или LOAD DATA FROM INFILE. |
$arrref = $sth->is_blob; | Массив битов, специфицирующих является ли данное поле BLOB. |
$arrref = $sth->is_not_null; | Массив битов, специфицирующих является ли данное поле NULL. |
$arrref = $sth->is_pri_key; | Массив битов, специфицирующих является ли данное поле первичным ключом. |
$arrref = $sth->is_num; | Массив битов, специфицирующих является ли данное поле числом. |
$scalar = $sth->insert_id; | Значение, присвоенное столбцу с помощью AUTO_INCREMENT последним INSERT. |
$arrref = $sth->length; | Массив длин всех полей в байтах. |
$arrref = $sth->name; | Имена всех столбцов. |
$scalar = $sth->numrows; | Количество возвращаемых записей. |
$scalar = $sth->numfields; | Количество возвращаемых полей. |
$arrref = $sth->table; | Имена каждого столбца в таблице. |
$arrref = $sth->type; | Тип каждого столбца, определен в mysql.h. Доступен с помощью &Mysql::CHAR_TYPE, &Mysql::INT_TYPE, &Mysql::REAL_TYPE |
Опция -w
Опция -w может быть очень полезной в случае проблем с отладкой. Если Вы вызываете программу на perl с опцией -w, то предупреждения, обычно хранимые в $Mysql::db_errstr будут выводиться в STDERR (стандартный поток ошибок). Таким образом, Вы получите сообщения об ошибках сервера MySQL без обработки их в Вашей программе.
Если надо использовать опцию -w, но не надо, чтобы сообщения об ошибках увидел демон MySQL, можно установить переменную $Mysql::QUIET в любое ненулевое значение.
MySQL использует библиотеку libmysql.a, написанную Михаэлем Видениусом (Michael Widenius). Эта библиотека обязательно должна быть установлена до использования этого интерфейса с perl.
MySQL perl API основан на mSQL perl API версии 1.17, разработанной Андреасом Коенигом (Andreas Koenig's http://www.hermetica.com/technologia/perl/DBI домашняя страничка DBI,
http://www.tcx.se домашняя страничка mysql,
www.hughes.com.au домашняя страничка
msql.
Назад | Содержание | Вперед
|