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.