POE::Component::LaDBI::Request - Class to encapsulate LaDBI requests to be executed by POE::Component::LaDBI::Engine.
Excuse the vulgarities, I was tired and maybe even a little drunk ;).
use POE::Component::LaDBI::Request; $dsn = 'dbi:Sybase:server=biteme;hostname=sybdb.biteme.com;database=biteme', $user = 'pimple'; $passwd = 'oNMyaSS'; $req = POE::Component::LaDBI::Request->new(Cmd => 'connect', Data => [$dsn, $user, $passwd]); $eng = POE::Component::LaDBI::Engine->new(); $resp = $eng->request( $req ); die "connect failed" unless $resp->code eq 'OK'; $dbh_id = $resp->handle_id; $sql = 'SELECT * FROM candidates WHERE jaws = ? AND willingness = ?' $req = POE::Component::LaDBI::Request->new(Cmd => 'prepare', HandleId => $dbh_id , Data => [$sql] ); $resp = $eng->request( $req ); die "prepare failed" unless $resp->code eq 'OK'; $sth_id = $resp->handle_id; $req = POE::Component::LaDBI::Request->new(Cmd => 'execute', HandleId => $sth_id , Data => ['WEAK','HIGH']); $resp = $eng->request( $req ); die "execute failed" unless $resp->code eq 'OK'; $req = POE::Component::LaDBI::Request->new(Cmd => 'rows', HandleId => $sth_id); $resp = $eng->request( $req ); die "rows failed" unless $resp->code eq 'OK'; $nr_rows = $resp->data(); $req = POE::Component::LaDBI::Request->new(Cmd => 'fetchrow', HandleId => $sth_id); for ($i=0; $i < $nr_rows; $i++) { $resp = $eng->request( $resp ); die "fetchrow failed" unless $resp->code eq 'OK'; $row = $resp->data(); print "row[$i]: ", join("\t", @$row), "\n"; }
$req = POE::Component::LaDBI::Request->new()
Upon instantiation a request id is allocated to represent this request. This cookie is available as $req-id>.
$req-
Args:
For the keys, capitalization does not matter. Internally the keys are lowercased.
Cmd
Required.
The command to execute. Only a subset of DBI basic commands implemented.
The value must be in all uppercase.
So far they are:
CONNECT -> DBI->connect DISCONNECT -> $dbh->disconnect PREPARE -> $sth->prepare FINISH -> $sth->finish EXECUTE -> $sth->execute ROWS -> $sth->rows FETCHROW -> $sth->fetchrow FETCHROW_HASH -> $sth->fetchrow_hash FETCHALL -> $sth->fetchall FETCHALL_HASH -> $sth->fetchall_hash PING -> $dbh->ping DO -> $dbh->do BEGIN_WORK -> $dbh->begin_work COMMIT -> $dbh->commit ROLLBACK -> $dbh->rollback SELECTALL -> $dbh->selectall SELECTALL_HASH -> $dbh->selectall_hash SELECTCOL -> $dbh->selectcol SELECTROW -> $dbh->selectrow QUOTE -> $dbh->quote
HandleId
For some commands it is required. They are:
DISCONNECT PREPARE FINISH EXECUTE ROWS FETCHROW FETCHROW_HASH FETCHALL PING DO BEGIN_WORK COMMIT ROLLBACK SELECTALL SELECTALL_HASH SELECTCOL SELECTROW QUOTE
Data
CONNECT PREPARE DO FETCHALL_HASH SELECTALL SELECTALL_HASH SELECTCOL SELECTROW QUOTE
No Data field is allowed for:
DISCONNECT ROWS FETCHROW FETCHROW_HASH BEGIN_WORK COMMIT ROLLBACK
$req->cmd
Set/Get accessor function.
$req->data
$req->handle_id
$req->id
Get accessor function.
None by default.
Sean Egan, <seanegan:bigfoot_com>
perl, POE::Component::LaDBI::Response, POE::Component::LaDBI::Engine.
To install POE::Component::LaDBI, copy and paste the appropriate command in to your terminal.
cpanm
cpanm POE::Component::LaDBI
CPAN shell
perl -MCPAN -e shell install POE::Component::LaDBI
For more information on module installation, please visit the detailed CPAN module installation guide.