Ananke-SqlLink

 view release on metacpan or  search on metacpan

SqlLink.pm  view on Meta::CPAN

#!/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 )