Ananke-SqlLink
view release on metacpan or search on metacpan
#!/usr/bin/perl -w
# Efetua conexao com o banco de dados
# By: Udlei Nattis <nattis@anankeit.com.br>
# Date: Tue Nov 27 13:56:34 BRST 2001
# {type},{db},{host},{username},{passwd}
# MySQL vars: host,username,passwd,db
package Ananke::SqlLink;
use vars qw($conn);
use DBI;
use strict;
our $VERSION = '1.1.1';
# Inicia conexao
sub new {
my($self,$vars) = @_;
my ($conn);
# Verifica se é mysql
if ($vars->{type} eq "mysql") {
$conn = DBI->connect("DBI:$vars->{type}:$vars->{db}:$vars->{host}",
$vars->{username},$vars->{passwd})
or die DBI::errstr;
bless {
conn => $conn,
type => $vars->{type},
error => undef,
pre => undef,
}, $self;
}
}
# Recupera dados do db
sub return {
my ($self,$q,$t) = @_;
my (@array,@row,$row);
# Verifica formato de dados que deve retorna
$t = "scalar" if (!$t);
# Prepara query
eval { $self->{pre} = $self->{conn}->prepare($q); };
# Verifica se conseguiu executar a query
eval { $self->{pre}->execute } or die DBI::errstr;
# Retorna em formato array
if ($t eq "array") {
while (@row = $self->{pre}->fetchrow_array) {
push(@array,[ @row ]);
}
}
# Retorna em formato hash
elsif ($t eq "scalar") {
eval {
while ($row = $self->{pre}->fetchrow_hashref) {
push(@array,$row);
}
};
}
eval { $self->{pre}->finish };
# Apaga variaveis indesejadas
undef $q; undef $t;
# Retorna os resultados do select
return @array;
}
# executa funcao 'do'
sub do {
my ($self,$q) = @_;
$self->{conn}->do($q);
if (DBI::errstr) {
$self->{error} = DBI::errstr;
return 0;
}
undef $q;
( run in 0.421 second using v1.01-cache-2.11-cpan-ceb78f64989 )