A interface DBI
Métodos e Atributos DBI Portáteis
| Método/Atributo | Descrição |
connect
| Estabelece uma conexão ao servidor de banco de dados. |
disconnect
| Disconecta de um servidor de banco de dados. |
prepare
| Prepara uma instrução SQL para ser executada. |
execute
| Executa instruções preparadas. |
do
| Prepara e executa uma instrução SQL. |
quote
| Coloca valores string ou BLOB entre aspas para serem inseridos.
|
fetchrow_array
| Busca a próxima linha como um vetor de campos. |
fetchrow_arrayref
| Busca a próxima linha como um vetor referência de campos. |
fetchrow_hashref
| Busca a prima linha como uma referência a uma tabela hash. |
fetchall_arrayref
| Busca todos os dados como um vetor de vetor (matriz). |
finish
| Finaliza uma instrução e deixa os recursos do sistema livres. |
rows
| Retorna o número de linhas afetadas. |
data_sources
| Retorna um vetor de banco de dados disponíves ne localhost. |
ChopBlanks
| Controla de o método fetchrow_* elimina os espaços em branco.
|
NUM_OF_PARAMS
| O número de colchetes em uma instrução preparada. |
NULLABLE
| Quais colunas podem ser NULL.
|
trace
| Realiza rastreamento para depuração. |
Métodos e Atributos específicos do MariaDB
| Método/Atributos | Descrição |
mysql_insertid
| O último valor AUTO_INCREMENT.
|
is_blob
| Quais colunas são valores BLOB.
|
is_key
| Quais colunas são chaves. |
is_num
| Quais colunas são numéricas. |
is_pri_key
| Quais colunas são chaves primárias. |
is_not_null
| Quais colunas NÃO PODEM ser NULL. Veja NULLABLE.
|
length
| O tamanho máximo das colunas. |
max_length
| O tamanho máximo das colunas presentes no resultado. |
NAME
| Nomes de colunas. |
NUM_OF_FIELDS
| Número de campos retornados. |
table
| Nome de tabelas no resultado. |
type
| Todos os tipos de colunas |
Os métodos Perl são descritos em maiores detalhes nas seções seguintes. Variáveis usadas em métodos que retornam valor tem estes significados:
$dbhManipulador do Banco de Dados
$sthManipulador da Instrução
$rcCódigo de Retorno (geralmente um status)
$rvValor de Retorno (geralmente um contador de linhas)
Métodos e Atributos DBI Portáteis
connect($data_source, $username, $password)Usa o método
connectpara fazer uma conexão do banco de dados a fonte de dados. O valor$data_sourcedeve começar comDBI:driver_name:. Exemplo de uso deconnectcom o driverDBD::mysql:$dbh = DBI->connect('DBI:mysql:$database', $user, $password); $dbh = DBI->connect('DBI:mysql:$database:$hostname', $user, $password); $dbh = DBI->connect('DBI:mysql:$database:$hostname:$port', $user, $password);Se o nome do usuário e/ou senha não são definidos,
DBIusa os valores das variáveis de anbienteDBI_USEReDBI_PASS, respctivamente. Se você não especificar um nome de máquina, ele utiliza o padrão'localhost'. Se você não especificar um número de porta, ele utiliza a porta padrão do MariaDB(3306).Atá o
Msql-Mysql-modulesVersão 1.2009, o valor$data_sourcepermitia alguns modificadores:mysql_read_default_file=file_nameLê
file_namecomo um arquivo de opção. Para informação sobre arquivo de opções veja "Arquivo de Opçõesmy.cnf".mysql_read_default_group=group_nameO grupo padrão ao se ler uma arquivo de opções é, normalamente, o grupo
[client]. Especificando a aopçãomysql_read_default_group, o grupo padrão se torna o grupo[group_name].mysql_compression=1Utiliza comunicação compactada enter o cliente e o servidor (MySQL Versão 3.22.3 ou posterior).
mysql_socket=/path/to/socketEspecifica o caminho do socket Unix que é utilizado para se conectar ao servidor (MySQL Versão 3.21.15 ou posterior).
Múliplos modificadores podem ser dados. Cada um deve ser precedido de ponto e vírgula.
Por exemplo, se você quiser evitar colocar o nome de usuário e senha em um script
DBI, você pode buscá-los em um arquivo de opção~/.my.cnfdo usuário ao invés de escrever a sua chamadaconnectdesta forma:$dbh = DBI->connect('DBI:mysql:$database' . ';mysql_read_default_file=$ENV{HOME}/.my.cnf', $user, $password);Esta chamado irá ler opções difinidas pelo grupo
[client]no arquivo de opções. Se você quiser fazer a mesma coisa mas utilizar opções especificadas no grupo[perl], você pode fazer:$dbh = DBI->connect('DBI:mysql:$database' . ';mysql_read_default_file=$ENV{HOME}/.my.cnf' . ';mysql_read_default_group=perl', $user, $password);disconnectO método
disconnectdisconecta o manipulador de banco de dados do banco de dados. Ele é normalmente chamado pouco antes de você sair do programa. Exemplo:$rc = $dbh->disconnect;
prepare($statement)Prepara uma instrução SQL para execução pelo mecanismo de banco de dados e retorna um manipulador de instrução
($sth), que você pode utilizar para chamar o métodoexecute.Normalmente você manipula a instrução
SELECT(e instruções do tipoSELECTtais comoSHOW,DESCRIBE, eEXPLAIN) através deprepareeexecute. Exemplo:$sth = $dbh->prepare($statement) or die 'Can't prepare $statement: $dbh->errstr\n';
Se voê quiser ler grandes resultados em seu cliente, você pode dizer ao Perl para utilizar
mysql_use_result()com:my $sth = $dbh->prepare($statement { 'mysql_use_result' => 1});executeO método
executeexecuta um instrução preparada. Para instrução não-SELECT,executeretorna o número de linha afetadas. Se nenhuma linha foi afetada,executeretorna'0E0', que o Perl trata como zero mas considera com true. Se um erro ocorrer,executeretornaundef. Para instruçõesSELECT,executeapenas inicia a consulta SQL no banco de dados; você precisa utilizar um dos métodos defetch_*descritos aqui para recuperar dados. Exemplo:$rv = $sth->execute or die 'can't execute the query: ' . $sth->errstr;
do($statement)O método
doprepara e executa uma instrução SQL e retorna o número linhas afetadas. Se nenhuma lina for afetada,doretorna'0E0', que o Perl trata como zero mas considera como true (verdadeiro). Este método é geralmente usado por instruções não-SELECTque não podem ser preparadas previamente (devida a limitações do driver) ou que não precisa ser esecutada mais que uma vez (inserts, deletes, etc.). Exemplo:$rv = $dbh->do($statement) or die 'Can't execute $statement: $dbh- >errstr\n';
Geralamente a instrução 'do' é mais rápida (e preferível) que prepare/execute para instruções que não contém parâmetros.
quote($string)O método
quoteé usada para 'escapar' qualquer caracter especial contido na string e para adcionar as aspas necessárias na saída. Exemplo:$sql = $dbh->quote($string)
fetchrow_arrayEste mátodo busca a próxima linha de dados e a retorna como um vetor de valores de campo. Exemplo:
while(@row = $sth->fetchrow_array) { print qw($row[0]\t$row[1]\t$row[2]\n); }fetchrow_arrayrefEste método busca a próxima linha de dados e a retorna como uma referência a um vetor de valores de campos. Exemplo:
while($row_ref = $sth->fetchrow_arrayref) { print qw($row_ref->[0]\t$row_ref->[1]\t$row_ref->[2]\n); }fetchrow_hashrefEste método busca uma linha de dados e retorna uma referência a uma tabela hash contendo pares nome de campos/valores. Este método não é tão eficiente quanto utilizar referências a vetor como demostrado acima. Exemplo:
while($hash_ref = $sth->fetchrow_hashref) { print qw($hash_ref->{firstname}\t$hash_ref->{lastname}\t\ $hash_ref->{title}\n); }fetchall_arrayrefEste método é usado para obter todos os dados (linhas) a serem retornados de uma instrução SQL. Ele retorna uma referência a um vetor de referências a vetores para cada linha. Você acessa ou imprime dados utilizando um loop aninhado. Exemplo:
my $table = $sth->fetchall_arrayref or die '$sth->errstr\n'; my($i, $j); for $i ( 0 .. $#{$table} ) { for $j ( 0 .. $#{$table->[$i]} ) { print '$table->[$i][$j]\t'; } print '\n'; }finishIndica que mais nenhum dado será buscado para este manipulador de instrução. Você chama este método para liberar o manipulador de instrução e qualquer recuros de sistema associado a ele. Exemplo:
$rc = $sth->finish;
rowsRetorna o número de linhas alteradas (atualiadas, deletadas, etc.) pelo último comando. Ele é normalmente utilizado após uma instrução
executenão-SELECT. Exemplo:$rv = $sth->rows;
NULLABLERetorna uma referência a um vetor de valores que indicam se colunas podem conter valores
NULL. Os valores possíveis para cada element do vetor é 0 ou uma string vazia se a coluna não puder serNULL, 1 se puder e 2 se a o estadoNULLda coluna é desconhecido. Exemplo:$null_possible = $sth->{NULLABLE};NUM_OF_FIELDSeste atributi indica o número de campos retornados pela instrução
SELECTouSHOW FIELDS. Você pode usá-la para verificar se uma instrução retornou um resultado: Um valor zero indica uma intrução não-SELECTcomoINSERT,DELETE, ouUPDATE. Exemplo:$nr_of_fields = $sth->{NUM_OF_FIELDS};data_sources($driver_name)Este método retorna um vetor contendo o nome dos bancos de dados disponíveis no servidor MariaDB na máquina
'localhost'. Exemplo:@dbs = DBI->data_sources('mysql');ChopBlanksEste atributo determina se o método
fetchrow_*irá apagar espaços em branco no inicio ou no fim dos valores retornados. Exemplo:$sth->{'ChopBlanks'} =1;trace($trace_level),trace($trace_level, $trace_filename)O método
tracehabilita ou disabilita o rastreamento. Quando chamado como um método da classeDBI, ele afeta o rastreamento em todos os manipuladores. Quando chamado como um método do manipulador de banco de dados ou de instrução, ele afeta o rastreamento para o manipulador dado (e qualquer filho futuro do manipulador). Definir$trace_levelcom 2 fornece detalhes da informação do rastreamento. Definir$trace_levelcom 0 desabilita o rastreamento. A saída do rastreamento vai para a saída padrão de erros por padrão. Se$trace_filenamefor esecificado, o arquivo é aberto no modo append e a saída para todos manipuladores rastreados traced handles é escrita neste arquivo. Exemplo:DBI->trace(2); # rastreia tudo DBI->trace(2,'/tmp/dbi.out'); # rastreia tudo para # /tmp/dbi.out $dth->trace(2); # rastreia este manipulador de banco de dados $sth->trace(2); # rastreia este manipulador de instruções
Você também pode habilitar o rastreamento
DBIconfigurando a variável de ambienteDBI_TRACE. Configurá-la com um valor numérico é o mesmo que chamarDBI->(value). Configurá-la com um caminhao é o mesmo que chamarDBI->(2,value).
Métodos e Atributos Especificos do MariaDB
Os métodos mostrados aqui são específicso do MariaDB e não são parte do padrão DBI. Diversos métodos já estão obsoletos: is_blob, is_key, is_num, is_pri_key, is_not_null, length, max_length, e table. Quando existir uma alternativa no padrão DBI, ela será listada aqui:
mysql_insertidSe você utilizar o recurso
AUTO_INCREMENTdo MariaDB, os novos valores auto-increment serão armazenados aqui. Exemplo:$new_id = $sth->{mysql_insertid};Com versões antigas da interface DBI, você pode usar
$sth->{'insertid'}.is_blobRetorna uma referência a um vetor de valores booleanos; para cada elemento do vetor, um valor TRUE indica que a respectiva coluna é um
BLOB. Exemplo:$keys = $sth->{is_blob};is_keyRetorna um referência a um vetor de valores booleanos; para cada elemento do vetor, um valor de TRUE indica que a coluna respectiva é uma chave. Exemplo:
$keys = $sth->{is_key};is_numRetorna uma referência a um vetor de valores booleanos; para cada elemento do vetor, um valor de TRUE indica que a coluna respectiva contém valores numéricos. Exemplo:
$nums = $sth->{is_num};is_pri_keyRetorna uma referência a um vetor de valores booleanos; para cada elemento do vetor, um valor de TRUE indica que a respectiva coluna é uma chave primária. Exemplo:
$pri_keys = $sth->{is_pri_key};is_not_nullRetorna uma referência para um vetor de valores booleanos; para cada elemento do vetor, um valor de FALSE indica que esta coluna pode conter valores
NULLExemplo:$not_nulls = $sth->{is_not_null};is_not_nullestá obsoleto; é preferível utilizar o atributoNULLABLE(descrito acima), porque ele é um padrão DBI.length,max_lengthCada um destes métodos retornam uma referêcia a um vetor com tamanho de colunas. O vetor
lengthindica a tamanho máximo que cada coluna pode ter (como declarado na descrição da tabela). O vetormax_lengthindica o tamanho máximo presente atualmente no resultado. Exemplo:$lengths = $sth->{length}; $max_lengths = $sth->{max_length};NAMERetorna um referência a um vetor de nomes de colunas. Exemplo:
$names = $sth->{NAME};tableRetorna um referência a um vetor de nomes de tabelas. Exemplo:
$tables = $sth->{table};typeRetorna uma referência a um vetor com tipos de colunas. Exemplo:
$types = $sth->{type};