Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: DBI Module Question

by Tux (Canon)
on Sep 29, 2009 at 14:36 UTC ( [id://798129]=note: print w/replies, xml ) Need Help??


in reply to DBI Module Question

And besides the useful comment already passed, a DSN is not in the form of a hostname, but in the form of a DSN, as the name already suggest, and these differ per database type. I have no idea how that would look for SQL Server 2008 as I don't have that

$dbh = DBI->connect ("dbi:Pg:dbname=test", $usr, $pass, { AutoCommit +=> 1 }); $dbh = DBI->connect ("dbi:CSV:", undef, undef, { f_dir => ".", PrintE +rror => 1 }); $dbh = DBI->connect ("dbi:Oracle:host=MADDY", $usr, $pass, { FetchHas +hKeyName => "NAME_lc" }); $dbh = DBI->connect ("dbi:mysql:database=gigo", $usr, $pass, { RaiseE +rror => 1 }); $dbh = DBI->connect ("dbi:SQLite:dbname=db/db", "", "", { ChopBlanks +=> 1 });

Enjoy, Have FUN! H.Merijn

Replies are listed 'Best First'.
Re^2: DBI Module Question
by saberworks (Curate) on Sep 29, 2009 at 15:54 UTC
    Is it just me or would the DBI connect syntax make a lot more sense if instead of concatenating a whole bunch of stuff together, it would just accept named arguments?
    my $dbh = DBI->connect( driver => 'Pg', dbname => 'foo', host => 'foo', user => 'bar', password => 'something' );

      For me it would not, but I might be biased. A simple reason might be that in my case the DSN is read from $ENV{DBI_DSN}, as I work in an environment where I use the same content on many different database types, and my scripts should not care about the way to connect to the source.

      So the first three of your parameters I would never use. Then there is the freedom (shrug) of the DBD authors to implement the DSN in a way that best matches the underlying database, which is why you will see variations in 'database=', 'db=', 'dbname=' etc. It would be a disaster to build all that in DBI, which is just the API to all the DBD modules.

      User and password make sense to most databases, but certainly not to all.

      Personally, I think that $dbh = DBI->connect (dsn, usr, pw, { attr }); is a very good compromise that is easy to remember.


      Enjoy, Have FUN! H.Merijn

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://798129]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others having an uproarious good time at the Monastery: (1)
As of 2024-04-25 00:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found