[Cascavel-pm] Conectar o SQL Server

Nilson Santos acid06 em gmail.com
Terça Fevereiro 15 03:56:24 PST 2005


Olá,

Na verdade, eu recomendaria usar o driver DBD para ADO, que pode ser
facilmente achado na CPAN.

DBD::ADO - http://search.cpan.org/~sgoeldner/DBD-ADO-2.94/

Dessa forma, pode-se usar a interface padrão DBI.

-Nilson Santos F. Jr.


On Tue, 15 Feb 2005 02:35:18 -0300, Solli Moreira Honorio
<shonorio em terra.com.br> wrote:
> Rafael, 
>  
> Estou enviando uma fração do meu código base para acessar o SQL Server, tome
> o cuidado (e faça as alterações necessárias) com as constantes que estão no
> código.
>  
> O código acessa o SQL via Ado, e está com as melhores práticas de acesso
> neste componente.
>  
> Se você tiver interessado em ver as 1001 connection strings para OLEDB, dê
> uma olhada no link
> http://www.able-consulting.com/MDAC/ADO/Connection/OLEDB_Providers.htm
>  
> Solli M. Honorio
>  
> <code>
> use Win32::OLE qw(in);
> use Win32::OLE::Const;
> sub ConnectDB
> {
>     my $DBConn        = Win32::OLE->new('ADODB.Connection');
>     my $DB_CONNECTION = shift;
>     
>     $DBConn->Open( $DB_CONNECTION );
>     if ( Win32::OLE->LastError() )
>     {
>         my $Error = Win32::OLE->LastError();
>  # Trate o erro aqui !!!
>         return undef;
>     }
>     else
>     {
>         return $DBConn;
>     }
> }
> sub DBExecute
> {
>     my ($DB_CONNECTION, $String, $ToReturn, $ErrosReturn ) = @_;
>     my ($DBConn, $RS, $ArgCount);
>     my $Loop = 0;
>     
>     return INVALID_PARAMETER if ( ref ( $String ) );
>     return NULL_PARAMETER    if (! $String );
>     $ArgCount = ( scalar (@_) - 2 );                    # Get number of
> argument
>     if ( $DBConn = ConnectDB($DB_CONNECTION) )          # Try to connect on
> DB
>     {                                                   # ... if ok ...
>         if (! $ArgCount )  # If has just one argument, then it's mean
>         {                  # no recordset
>             $DBConn->Execute ( $String, undef, (0x00000080 + 0x0001) );
>         }
>         else              # Otherwise mean recordset
>         {
>             $RS = $DBConn->Execute ( $String );
>         }
>         if ( Win32::OLE->LastError() )
>         {
>          # If any error happen, write error message on EventLog
>          # and abort this class.
>             my $Error = Win32::OLE->LastError();
>             WriteEventLog ( $ENV{COMPUTERNAME},    # Computer name
>                             ERROR_DB_EXCUTE,       # Event ID
>                             $Error,                # String
>                             EVT_ERROR);            # Event Type
>             return ERROR_DB_EXCUTE;
>         }
>         if (! $ArgCount ) # Return ok if don't need anything more
>                 { $DBConn->Close(); return };
>         # Clear any before data on an array ref.
>         map { pop @{$ToReturn} } @{$ToReturn};
>         # Save the result on array.
>         while ( )
>         {
>             # Get all message returned by ADO connection
>             foreach my $Error ( in ( $DBConn->Errors() ) )
>             {
>                 my $Description = $Error->{Description};
>                 $Description    =~ s/\s*$//;
>                 push @{$ErrosReturn}, $Description;
>             }
>     
>             if ( defined $RS->{EOF} )
>             {
>                 while (! $RS->{EOF} )
>                 {
>                     my %hash = ();
>                     foreach my $field ( in ( $RS->Fields() ) )
>                     {
>                         $hash{$field->{Name}} = $field->{Value}
>                     }
>                     push @{$ToReturn}, \%hash;
>                     $RS->MoveNext;
>                 }
>             }
>             eval { $RS = $RS->NextRecordSet(); };
>             last if ( $@ );
>         }
>         # Clean all object used by ADO connection...
>         $RS->Close();
>         $DBConn->Close();
>         undef $RS;
>         undef $DBConn;
>         return;
>     }
>     else
>     {
>         return ERROR_DB_CONNECT;
>     }
> }
> my $ConnectionString = "Provider=sqloledb; Data Source=Server; Initial
> Catalog=master;Integrated Security=SSPI";
> my $string           = "select * from table";
> DBExecute ($ConnectionString, $string, \@Return );
> </code>
>  
> De:cascavel-pm-bounces em pm.org
> Para:cascavel-pm em pm.org
> Cópia:
> Data:Mon, 14 Feb 2005 12:04:46 -0300
> Assunto:[Cascavel-pm] Conectar o SQL Server
>   
> > Olá Monges,
> >  
> >   Alguém sabe me dizer se existe algum módulo para conectar ao SQL Server?
> >  
> > Desde já agradeço.
> >  
> > Um abraço,
> ________________________________
> Rafael Szarblewski - Sistêmica Computadores
> Desenvolvedor Web
> rafael em sistemica.info
> Fone: (51)3328-11-22 
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
> 
>


Mais detalhes sobre a lista de discussão Cascavel-pm