Installing Perl DBI/ADO/Win32/OLE
I have Linux 2.4.18-18 and RedHat9. This is a webserver that is currently up and running properly (using Apache).
What I am trying to do is connect to a MS Access database thru Perl CGI script.
After some reading I figured out that I needed DBI. No problem, I got DBI-1.30.tar from the web. The README file says that I have to Build,test and install Perl. I thought I already had it but I figured installing it twice wouldn't make a difference. The README file say to:
perl Makefile.PL
make
make test
make install
I did all this without any errors. It also states I needed driver modules. I went to the web again and found DBD-ADO-2.79.tar. The README file on that didn't really tell me where to put all these files but after trial and error I figured out the belong in the /usr/lib/perl5/5.8.0/DBD folder.
I wrote (actually I copied most of it from a website) a simple script to tell me what modules are installed. It goes as follows:
#####################
#!/usr/bin/perl
print "Content-type:text/html\n\n";
use strict;
use DBI;
my @drivers=DBI->available_drivers;
print "<html><body>\n";
print "Hello World<br>";
print join("\n",@drivers);
print "\n";
print "</body></html>";
#########################
And it works. It spits out:
#############################
Hello World
ADO ExampleP ODBC Proxy
#########################
Cool. That is what it should do. But when I try to connect to a database, I get errors.
OK first the CGI file that I am using. I took this code off a tutorial on the web. It pretty much should add a table to test.mdb which is located in /home/jonathan
####################################
#!/usr/bin/perl
print "Content-type:text/html\n\n";
use POSIX;
use strict;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);
use DBI;
my @drivers=DBI->available_drivers;
my $DSN='driver=Microsoft Access Driver (*.mdb);dbq=/home/jonathan/test.mdb';
my $dbh=DBI->connect("dbi:ADO:$DSN",'','')
or die "$DBI::errstr\n";
my $sql=<<"EndOfSQL";
CREATE TABLE tblContacts2(
ID COUNTER,
LastName CHAR(40),
Address CHAR(40),
CONSTRAINT ID_PK PRIMARY KEY(ID)
)
EndOfSQL
$dbh->do($sql)
or die "Execution problem: $DBI::errstr";
print "<html><body>\n";
print "Hello World<br>";
print "Table was Created";
print join("\n",@drivers);
print "\n";
print "</body></html>";
$dbh->disconnect;
#################################
Now here is the error I get when I run this:
###############################
install_driver(ADO) failed: Undefined subroutine &Win32::OLE::TypeInfo::VARFLAG_FHIDDEN called at /usr/lib/perl5/5.8.0/DBD/ADO/Const.pm line 14.
Compilation failed in require at /usr/lib/perl5/5.8.0/DBD/ADO/TypeInfo.pm line 7.
BEGIN failed--compilation aborted at /usr/lib/perl5/5.8.0/DBD/ADO/TypeInfo.pm line 7.
Compilation failed in require at /usr/lib/perl5/5.8.0/DBD/ADO.pm line 288.
BEGIN failed--compilation aborted at /usr/lib/perl5/5.8.0/DBD/ADO.pm line 288.
Compilation failed in require at (eval 1) line 3.
#################################
So I guess my question(s) is this:
Did I install DBI and ADO correctly? I suppose that I have to install Win32::OLE as well but I have no idea where to get it or how to install it.
Anything to help would be great.
Thanks,
krzykard
|