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>.
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"
- For some commands it is required. They are:
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"
- Set/Get accessor function.
- "$req->handle_id"
- Set/Get accessor function.
- "$req->id"
- Get accessor function.
Sean Egan, <seanegan:bigfoot_com>
perl, POE::Component::LaDBI::Response, POE::Component::LaDBI::Engine.