Ananda has asked for the wisdom of the Perl Monks concerning the following question:

Hello Monks

listed below is a code that i used to access SQL Server Database

The code, when executed throwsup the following error :

DBI->connect(test) failed: [Microsoft][ODBC SQL Server Driver][SQL Ser +ver]Login failed for user 'HASH(0x1a7f0ec)'. (SQL-28000)(DBD: db_login/SQLConnec +t err=-1) at test_database.pl line 6

------------------The Code -------

my $dbh = DBI->connect("dbi:ODBC:test", { 'AutoCommit' =>1, 'RaiseError' =>1}) || die "Error connecting: '$DBI +::errstr'"; my $sql =" SELECT * FROM Client WHERE clientid = 3 OR CITY = 'ss'"; my $sth = $dbh->prepare($sql); $sth->execute || die "Could not execute SQL statement ... maybe invalid?"; die "Error connecting: '$DBI::errstr'"; my $rows = $dbh->selectall_arrayref($sql) || die $dbh->errstr; if (@$rows){ foreach my $row(@$rows){ print "@$row\t\n";}} else {print "No matches found";}

I solicit belittle thought and request solution. Cheers!!

Anandatirtha

Replies are listed 'Best First'.
Re: Database access
by robartes (Priest) on Nov 19, 2002 at 11:19 UTC
    You forgot to specify the user and password to access the DB. The connect call took the anonymous hash specifying the options as the username, hence the rather funky error. Try this:
    my $dbh = DBI->connect("dbi:ODBC:test", $user, $pass, { 'AutoCommit' =>1, 'RaiseError' =>1}) || die "Error connecting: '$DBI +::errstr'"; # Assuming the username and password to connect to the DB are in $user + and $pass, respectively.

    CU
    Robartes-

      Hey Robertes,

      Thanks for the quick response. I tried what you suggested and the result is

      Global symbol "%pass" requires explicit package name at test_database. +pl line 8. Execution of test_database.pl aborted due to compilation errors.
      Ananda
        Good, it looks like you are using strict judging from the error message. I'm thinking you probably wanted to use $pass and not %pass and you also probably forgot to declare the variable with my. Please post the code so we can take a peek.

        -- vek --
        hi,
        would you be so kind and post your new script.
        May be we can help you.