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

Please help me out in using the Perl script to connect to SQL DB & execute a small a query in perl to show some data is returned after querying, just to confirm the connection. I Have to check this both in Unix & Windows env, as this is the only driver installed(ODBC not there).<\p>

  • Comment on DBI::DBM - How to use this for SQL connection

Replies are listed 'Best First'.
Re: DBI::DBM - How to use this for SQL connection
by stefbv (Priest) on Apr 06, 2011 at 06:40 UTC

    Do you mean DBD::DBM? To get help from the PerlMonks, you need to give some more details, so we don't have to guess about what the problem is.

      Yes .... I have to execute a perl script(Unix/Windows) to update in SQL database. I have a limitation that, I can only use DBD::DBM to run the query. As i haven't worked with DBM files, I want to know how to execute with DBM Module. I have written a sample script, but i'm receiving error as \.Usr.lck : No such directory or file exist. DO i need to place the SQL files in some folder or Do i have to use it in some other way? Could you please elaborate me out.

      #!/usr/bin/perl -w use strict; use DBI; my $dbh=DBI->connect('dbi:DBM:f_dir=D:\Perl\site\lib\DBD\usr.sql') or die "Can't connect to $DBI::errstr"; my $sql = "SELECT USERNAME FROM USERS"; my $sth = $dbh->prepare($sql) or die "Can't prepare statement: $DBI::errstr"; $sth->execute(); print $sth; $dbh->disconnect;

        For testing better use the default current working directory. Anyway the Perl dir from your example is not a good choice. ("f_dir" expects a path to the "database").

        A quick example (not a style guide!):

        The first script will create 3 files: "users.dir", "users.lck" and "users.pag", in the current dir.

        The dbm-create.pl script example:

        #!/usr/bin/perl -w use strict; use DBI; my $dbh = DBI->connect('dbi:DBM:') or die "Can't connect to $DBI::errstr"; my $sql_create = 'CREATE TABLE users ( username TEXT, phone TEXT )'; $dbh->do($sql_create); $dbh->do( "INSERT INTO users VALUES ('user1', '123-321123')" ); $dbh->disconnect;

        The dbm-select.pl script example:

        #!/usr/bin/perl -w use strict; use DBI; my $dbh = DBI->connect('dbi:DBM:') or die "Can't connect to $DBI::errstr"; my $sql = "SELECT username, phone FROM users"; my $sth = $dbh->prepare($sql) or die "Can't prepare statement: $DBI::errstr"; $sth->execute(); while ( my $rec = $sth->fetchrow_hashref('NAME_lc') ) { print $rec->{username}, ' : ', $rec->{phone}, "\n"; } $dbh->disconnect;