DBI Básico - Banco de Dados Perl
Publicado por Daniel Vinciguerra (última atualização em 02/03/2016)
[ Hits: 5.680 ]
Homepage: http://bivee.com.br
Quando estamos aprendendo linguagens de programação, sempre chegamos a um ponto onde armazenar e trabalhar com dados se torna importante.
O Perl tem um meio muito interessante de fazer isso através do modulo DBI (Perl Database Interface) que inspirou algumas linguagens, como Ruby e Python.
Baixe o código deste script e leia com atenção os comentários para conhecer o básico de como trabalhar com o banco de dados em Perl.
PRÉ-REQUISITOS:
- Perl 5.10 ou superior
- Banco MySQL instalado
- Driver dbi DBD::mysql instalado
REFERÊNCIAS:
http://dbi.perl.org
https://metacpan.org/pod/DBI
EXECUTANDO:
Para executar o script:
$ perl dbi-basico.pl
Para ver mais mensagens de debug execute com a flag debug:
$ DEBUG=1 perl dbi-basico.pl
Obs.: altere a string de conexão dentro do script.
#!/usr/bin/env perl
# 2016 (c) Daniel Vinciguerra
# carrega os programas mais comuns
use 5.10.0;
use strict;
use warnings;
# http://dbi.perl.org
use DBI;
use Carp;
# criando uma nova conexão usado o driver DBD::mysql
# https://metacpan.org/pod/DBD::mysql
my $dbh = DBI->connect(
'dbi:mysql:database=test;host=localhost;', 'root', 'test'
);
# try/catch
eval {
# excluindo a tabela
say "DEBUG: Tabela 'usuario' removida!" if $ENV{DEBUG};
$dbh->do('DROP TABLE usuario;');
# criando a tabela
say "DEBUG: Tabela 'usuario' criada!" if $ENV{DEBUG};
$dbh->do(q{
CREATE TABLE `usuario` (
`id` INT NOT NULL AUTO_INCREMENT,
`nome` VARCHAR(45) NOT NULL,
`email` VARCHAR(45) NOT NULL,
`senha` VARCHAR(45) NOT NULL,
`criacao` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`));
});
# inserindo 5 usuários
say "DEBUG: Adicionando 5 usuários!" if $ENV{DEBUG};
for my $number ( 1 .. 5 ){
$dbh->do(
'INSERT INTO usuario (nome, email, senha) VALUES (?, ?, ?)', undef,
"Usuario ${number}", "usuario${number}\@teste.com", "passwd"
);
}
};
if($@){
# catch error
Carp::confess("Database Error: $@");
}
############################
# listando todos os registros
############################
eval {
say "DEBUG: Executando query 'SELECT'!" if $ENV{DEBUG};
my $sth = $dbh->prepare( 'SELECT * FROM usuario');
$sth->execute;
# todas as linhas em um array de hashes
while(my $linha = $sth->fetchrow_hashref){
# exibindo colunas
say "Usuário $linha->{id} - '$linha->{nome}' encontrado!";
}
};
############################
# pesquisando um registro
############################
eval {
say "DEBUG: Executando query 'SELECT' usando 'WHERE'!" if $ENV{DEBUG};
my $sth = $dbh->prepare(
'SELECT id, nome, email, senha, criacao FROM usuario WHERE id = ?'
);
$sth->execute(2);
# todas as colunas no array coluna
my @coluna = $sth->fetchrow_array;
# exibindo colunas
say "Usuário '$coluna[1]' encontrado!";
};
############################
# Excluindo um registro
############################
eval {
say "DEBUG: Executando query 'DELETE'!" if $ENV{DEBUG};
$dbh->do('DELETE FROM usuario WHERE nome = ?', undef, 'Usuario 3');
# exibindo colunas
say "Usuário 'Usuario 3' removido!";
};
DBIx::Custom para acesso ao Banco de Dados
Tirando screenshots facilmente !
Inserindo sites em Lista do Squid
Nenhum comentário foi encontrado.
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
Erro ao instalar programa, "você tem pacotes retidos quebrados&qu... (8)
VOL já não é mais como antes? (15)
Como personalizar o lxde? [RESOLVIDO] (5)
Flatpaks não funcionam após atualizar pelo Gerenciador de Atualizações... (3)









