Perl e MySQL
Nesse artigo, eu explico como podemos integrar Perl com MySQL, um dos SGBDs mais populares do mundo.
Parte 2: Conectando-se ao Database / Identificando os erros
Conectando-se ao Database
Nesse primeiro exemplo, irei mostrar como conectar-se ao MySQL e verificar se houveram erros com essa conexão:use DBI;
use DBD::mysql;
my $host = 'localhost';
my $user = 'root';
my $password = 'toor';
my $db = 'perl';
my $info = "dbi:mysql:$db:$host:3306";
my $con = DBI->connect($info,$user,$password);
A função DBI->connect, funciona da seguinte maneira:
DBI->connect('dbi:<DRIVER>:<NOME-DO-DATABASE>:<HOST>:PORTA','USUÁRIO','SENHA', { atributos })
Nesse exemplo de código, iremos nos conectar em localhost, na porta 3306 (porta usada pelo MySQL, por padrão), usando as credenciais root como usuário, toor como senha e usando o Database perl.
Caso a conexão seja bem sucedida, no exemplo acima, nenhuma mensagem de erro será exibida, significa que tudo ocorreu bem.
Mas, agora, se algo tenha ocorrido errado, como por exemplo: "Credenciais inválidas, database "perl" inexistente", entre outros, mensagens de erros serão exibidas por padrão. Você pode inibir essas mensagens, para isso, basta usar a seguinte linha de código:
my $con = DBI->connect($info,$user,$password,{ PrintError => 0, RaiseError => 0 });
Se ocorrerem erros, eles não serão mais exibidos por padrão. Isso é bem útil, caso goste de customizar as mensagens de erros, ou simplesmente, não queira exibir essas mensagens para o usuário em uma interface WEB (por exemplo).
Mas, e agora? Como vou saber se tudo ocorreu bem, se os erros não aparecem mais? (Haha) Isso é Perl! É como o próprio slogan da linguagem diz: "Existe mais de uma maneira de se fazer isso!".
Você pode verificar erros, usando o operador lógico or (||), exemplos:
my $con = DBI->connect($info,$user,$password,{ PrintError => 0, RaiseError => 0 }) || die("Error");
my $con = DBI->connect($info,$user,$password,{ PrintError => 0, RaiseError => 0 }) or return("error");
Ou, verificando a variável que recebe informações da conexão, usando outro operador lógico, o not (!), exemplo:
if(not($con)){
print "Falha na conexão\n";
}
if(!$con){
print "Falha na conexão\n";
}
print "Falha na conexão\n";
}
if(!$con){
print "Falha na conexão\n";
}
Identificando os erros
Para isso, basta usar as variáveis "$DBI::errstr" e "$DBI::err", através delas, você pode verificar quais erros estão ocorrendo na sua aplicação.Onde:
- $DBI::errstr contém uma mensagem com o erro.
- $DBI::err contém somente o código do erro.
E dessa maneira, você pode tentar resolver esses erros (*of course modafoca*).
Você também pode verificar por erros em execuções de queries, usando a função errstr e err, através das variáveis que ficaram responsáveis por receber informações da consulta.
Exemplo:
sql->errstr e $sql->err
Você tem alguma dica de material para quem está começando em perl ? Eu so meio fraquinho em programação mas tenho como base shell script que foi aonde me aprofundei mais :/