NAME

Data::Phrasebook::SQL - DBI integration with phrasebooks

SYNOPSIS

use Data::Phrasebook;
use DBI;

my $dbh = DBI->connect(...);

my $book = Data::Phrasebook->new(
    class => 'SQL',
    dbh   => $dbh,
    file  => 'queries.txt',
);
my $q = $book->query( 'find_author', {
        author => "Lance Parkin"
    });
while ( my $row = $q->fetchrow_hashref ) {
    print "He wrote $row->{title}\n";
}
$q->finish;

queries.txt:

find_author=select title,author from books where author = :author

DESCRIPTION

In order to make use of features like placeholders in DBI in conjunction with phrasebooks, it's helpful to have a phrasebook be somewhat more aware of how DBI operates. Thus, you get Data::Phrasebook::SQL.

Data::Phrasebook::SQL has knowledge of how DBI works and creates and executes your queries appropriately.

CONSTRUCTOR

new

Do not use directory, access via the parent Data::Phrasebook.

Additional arguments to those described in Data::Phrasebook::Generic are:

  • dbh - a DBI database handle.

METHODS

dbh

Set, or get, the current DBI handle.

query

Constructs a Data::Phrasebook::SQL::Query object from a template.

Takes two arguments, the first being a name for the query. This is looked for in the file that was given.

The second argument is an optional hashref of key to value mappings.

If phrasebook has a YAML source looking much like the following:

---
find_author:
    sql: select class,title,author from books where author = :author

You could write:

my $q = $book->query( 'find_author' );

Or:

my $q = $book->query( 'find_author', {
    author => 'Lance Parkin'
} );

Or:

my $author = 'Lance Parkin';
my $q = $book->query( 'find_author', {
    author => \$scalar,
} );

If you ask for a template that is either not there or has no definition, then an error will be thrown.

Consult Data::Phrasebook::SQL::Query for what you can then do with your returned object.

For reference: the hashref argument, if it is given, is given to the query object's order_args and then args methods.

SEE ALSO

Data::Phrasebook, Data::Phrasebook::Generic, Data::Phrasebook::SQL::Query.

AUTHOR

Original author: Iain Campbell Truskett (16.07.1979 - 29.12.2003).

Maintainer: Barbie <barbie@cpan.org>.

LICENCE AND COPYRIGHT

Copyright E<copy> Iain Truskett, 2003. All rights reserved.
Copyright E<copy> Barbie, 2004-2005. All rights reserved.

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

The full text of the licences can be found in the F<Artistic> and
F<COPYING> files included with this module, or in L<perlartistic> and
L<perlgpl> in Perl 5.8.1 or later.