OpenInteract2::Datasource::DBI - Create DBI database handles
# Define the parameters for a database handle 'main' using PostgreSQL [datasource main] type = DBI dbi_type = Pg dsn = dbname=urkelweb username = webuser password = urkelnut # Define a handle 'win32' that uses Microsoft SQL Server and connects # with ODBC [datasource win32] type = DBI dbi_type = MSSQL use_odbc = yes dsn = MyDSN username = webuser password = urkelnut # Request the datasource 'main' from the context object (which in # turn requests it from the OpenInteract2::DatasourceManager object, # which in turn requests it from this class) my $dbh = CTX->datasource( 'main' ); my $sth = $dbh->prepare( "SELECT * FROM urkel_fan" ); $sth->execute; ...
No, we do not subclass DBI with this. No, we do not override any of the DBI methods. Instead, we provide the means to connect to the database from one location using nothing more than a datasource name. This is somewhat how the Java Naming and Directory Interface (JNDI) allows you to manage objects, including database connections.
Note that if you are using it this should work flawlessly (although pointlessly) with Apache::DBI, and if you are using this on a different persistent Perl platform (say, PerlEx) then this module gives you a single location from which to retrieve database handles -- this makes using the BEGIN/END tricks ActiveState recommends in their FAQ pretty trivial.
connect( $datasource_name, \%datasource_info )
Returns: A DBI database handle with the following parameters set:
RaiseError: 1 PrintError: 0 ChopBlanks: 1 AutoCommit: 1 (for now...) LongReadLen: 32768 (or from 'long_read_len' of \%datasource_info) LongTruncOk: 0 (or from 'long_trunc_ok' of \%datasource_info)
The parameter \%datasource_info defines how we connect to the database and is pulled from your 'datasource.$name' server configuration.
\%datasource_info
dsn ($)
The last part of a fully-formed DBI data source name used to connect to this database. Examples:
Full DBI DSN: DBI:mysql:webdb OpenInteract DSN: webdb Full DBI DSN: DBI:Pg:dbname=web OpenInteract DSN: dbname=web Full DBI DSN: DBI:Sybase:server=SYBASE;database=web OpenInteract DSN: server=SYBASE;database=web Full DBI DSN: DBI:ODBC:MyDSN OpenInteract DSN: MyDSN
So the OpenInteract DSN string only includes the database-specific items for DBI, the third entry in the colon-separated string. This third item is generally separated by semicolons and usually specifies a database name, hostname, packet size, protocol version, etc. See your DBD driver for what to do.
dbi_type ($)
What database type are you using? Available values are: 'MySQL', 'Pg', 'Sybase', 'ASAny', 'Oracle', 'SQLite' and 'MSSQL'.
username ($)
What username should we use to login to this database?
password ($)
What password should we use in combination with the username to login to this database?
use_odbc (yes/no; default no)
Whether to use ODBC as a DBI driver.
long_read_len ($) (optional)
Set the LongReadLen value for the database handle (See DBI for information on what this means.) If not set this defaults to 32768.
LongReadLen
long_trunc_ok (bool) (optional)
Set the LongTruncOk value for the database handle (See DBI for information on what this means.) If not set this defaults to false.
LongTruncOk
trace_level ($) (optional)
Use the DBI trace() method to output logging information for all calls on a database handle. Default is '0', which is no tracing. As documented by DBI, the levels are:
trace()
0 - Trace disabled. 1 - Trace DBI method calls returning with results or errors. 2 - Trace method entry with parameters and returning with results. 3 - As above, adding some high-level information from the driver and some internal information from the DBI. 4 - As above, adding more detailed information from the driver. Also includes DBI mutex information when using threaded Perl. 5 and above - As above but with more and more obscure information.
Any errors encountered will throw an exception, usually of the OpenInteract2::Exception::Datasource variety.
resolve_datasource_info( $name, \%datasource_info )
Internal method used to resolve some shortcuts we allow for usability. This will look at the 'dbi_type' and add keys to the datasource information:
Lists the SPOPS class to use.
Lists the DBI driver name to use -- this is what you'd use in the second ':' place in the DBI connect() call.
connect()
Returns a new hashref of information. For backwards compatibility, if we see the key spops in \%datasource_info we just return a new hashref with the same data.
spops
OpenInteract2::Exception::Datasource
Apache::DBI
DBI - http://www.symbolstone.org/technology/perl/DBI
PerlEx - http://www.activestate.com/Products/PerlEx/
Copyright (c) 2002-2005 Chris Winters. All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Chris Winters <chris@cwinters.com>
To install OpenInteract2::URL, copy and paste the appropriate command in to your terminal.
cpanm
cpanm OpenInteract2::URL
CPAN shell
perl -MCPAN -e shell install OpenInteract2::URL
For more information on module installation, please visit the detailed CPAN module installation guide.