DBI Básico - Banco de Dados Perl
Publicado por Daniel Vinciguerra (última atualização em 02/03/2016)
[ Hits: 5.708 ]
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
Script para fazer buscas no arquivo de logs do squid
Separando seu código em módulos no Perl
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como quebrar senha usando john the ripper
[Resolvido] VirtualBox can't enable the AMD-V extension
Como verificar a saúde dos discos no Linux
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Não consigo instalar distro antiga no virtualbox nem direto no hd (22)
Podem me chamar de 1mbecil :) [RESOLVIDO] (29)









