DBI Básico - Banco de Dados Perl

Publicado por Daniel Vinciguerra (última atualização em 02/03/2016)

[ Hits: 5.126 ]

Homepage: http://bivee.com.br

Download dbi-basico.pl




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.

  



Esconder código-fonte

#!/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!";
};

Scripts recomendados

DBIx::Custom para acesso ao Banco de Dados

Teste de conexão com MySQL

Biblioteca CGI-LIB.PL

Pagerank Checker

Sarg Diario


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts