First off I'd recommend using DBI instead of win32.  In case you don't know
DBI is a generic interface and as impossible, improbable, or ridiculous as
it sounds, you may need to use a different database, different OS, etc. DBI
will ease that transition. Trust me I speak from experience.

Aside from that you could do this:

foreach my $db ($connection1, $connection2)
{
        #Do the stuff you wanna do here.
}

I might add that if you're crashing out with a "die" and I see that you're
trying to be tidy and clean up your connection ($connection->Close()) you'll
need to close both DB to be entirely tidy. That goes for your initial test
if the connection is valid.

Hope that helps.

-Wayne



> -----Original Message-----
> From: Craig Cardimon [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, August 31, 2005 9:46 AM
> To: ActivePerl
> Subject: Win32::ODBC -- Using two databases simultaneously
> 
> I'm connecting to two databases at the same time, test and production. I
> have two sets of DSN connections and connection checks:
> 
> my $DSN = "Real";
> my $DSN2 = "Test";
> my $connection = new Win32::ODBC($DSN);
> my $connection2 = new Win32::ODBC($DSN2);
> 
> ## Make sure the connection is valid
> if ( ! $connection)
> {
>      die "\n\tCould not open connection to DSN because of [$!]\n";
> }
> 
> ## Make sure the connection is valid
> if ( ! $connection2)
> {
>      die "\n\tCould not open connection2 to DSN2 because of [$!]\n";
> }
> 
> *****
> 
> I can stick this logic in the beginning of the script.
> 
> But when I retrieve data and I trap for errors, I find I need two
> different sets of logic, one for test and one for real.
> 
> For instance:
> 
> my $SQL = "SELECT CustomerID, CompanyName FROM Customers";
> 
> if($connection->Sql($SQL))
> {
>      print "I could not execute the following statement:\n $SQL\n";
>      print "I encountered this error:\n";
>      print $connection->Error() . "\n";
> 
>      ## Closing the database connection
>      $connection->Close();
> 
>      ## Exiting the program
>      die;
> }
> 
> while($connection->FetchRow())
> {
>      my @dataRow = $connection->Data();
>      print $dataRow[0] . " : " . $dataRow[1] . "\n";
> }
> 
>  From what I've read, I need two each of these sections, one for each
> DSN and connection -- one for the Real DB and one for the Test DB.
> 
> The IF and WHILE sections above would belong to the Real DB. While I'm
> working with the Test DB, I'd need the following:
> 
> if($connection2->Sql($SQL))
> {
>      print "I could not execute the following statement:\n $SQL\n";
>      print "I encountered this error:\n";
>      print $connection2->Error() . "\n";
> 
>      ## Closing the database connection
>      $connection2->Close();
> 
>      ## Exiting the program
>      die;
> }
> 
> while($connection2->FetchRow())
> {
>      my @dataRow = $connection2->Data();
>      print $dataRow[0] . " : " . $dataRow[1] . "\n";
> }
> 
> Does this sound correct? I need to work with both DBs at the same time,
> and the code's getting a bit sloppy looking. Any suggestions?
> 
> -- Craig
> 
> 
> ---
> avast! Antivirus: Outbound message clean.
> Virus Database (VPS): 0535-1, 08/31/2005
> Tested on: 8/31/2005 11:45:52 AM
> avast! - copyright (c) 1988-2004 ALWIL Software.
> http://www.avast.com
> 
> 
> 
> _______________________________________________
> ActivePerl mailing list
> [email protected]
> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
_______________________________________________
ActivePerl mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to