Alzabo
view release on metacpan or search on metacpan
lib/Alzabo/Driver.pm view on Meta::CPAN
Returns the number of rows affected.
Throws: L<C<Alzabo::Exception::Driver>|Alzabo::Exceptions>
=head2 statement
This methods returns a new
L<C<Alzabo::DriverStatement>|Alzabo::DriverStatement> handle, ready to
return data via the L<C<< Alzabo::DriverStatement->next()
>>|Alzabo::DriverStatement/next> or L<C<<
Alzabo::DriverStatement->next_as_hash()
>>|Alzabo::DriverStatement/next_as_hash> methods.
Throws: L<C<Alzabo::Exception::Driver>|Alzabo::Exceptions>
=head2 rdbms_version
Returns the version string of the database backend currently in use.
The form of this string will vary depending on which driver subclass
is being used.
=head2 quote (@strings)
This methods calls the underlying DBI handles C<quote()> method on the
array of strings provided, and returns the quoted versions.
=head2 quote_identifier (@strings)
This methods calls the underlying DBI handles C<quote_identifier()>
method on the array of strings provided, and returns the quoted
versions.
=head1 Alzabo::DriverStatement
This class is a wrapper around C<DBI>'s statement handles. It finishes
automatically as appropriate so the end user does need not worry about
doing this.
=head2 next
Use this method in a while loop to fetch all the data from a
statement.
Returns an array containing the next row of data for statement or an
empty list if no more data is available.
Throws: L<C<Alzabo::Exception::Driver>|Alzabo::Exceptions>
=head2 next_as_hash
For backwards compatibility, this is also available as C<next_hash()>.
Returns a hash containing the next row of data for statement or an
empty list if no more data is available. All the keys of the hash
will be lowercased.
Throws: L<C<Alzabo::Exception::Driver>|Alzabo::Exceptions>
=head2 all_rows
If the select for which this statement is cursor was for a single
column (or aggregate value), then this method returns an array
containing each B<remaining> value from the database.
Otherwise, it returns an array of array references, each one
containing a returned row from the database.
Throws: L<C<Alzabo::Exception::Driver>|Alzabo::Exceptions>
=head2 all_rows_hash
Returns an array of hashes, each hash representing a single row
returned from the database. The hash keys are all in lowercase.
Throws: L<C<Alzabo::Exception::Driver>|Alzabo::Exceptions>
=head2 execute (@bind_values)
Executes the associated statement handle with the given bound
parameters. If the statement handle is still active (it was
previously executed and has more data left) then its C<finish()>
method will be called first.
Throws: L<C<Alzabo::Exception::Driver>|Alzabo::Exceptions>
=head2 count
Returns the number of rows returned so far.
=head1 Alzabo::Exception::Driver METHODS
In addition to the methods inherited from
L<C<Exception::Class::Base>|Exception::Class::Base>, objects in this
class also contain several methods specific to this subclass.
=head2 sql
Returns the SQL statement in use at the time the error occurred, if
any.
=head2 bind
Returns an array reference contaning the bound parameters for the SQL
statement, if any.
=head1 SUBCLASSING Alzabo::Driver
To create a subclass of C<Alzabo::Driver> for your particular RDBMS is
fairly simple. First of all, there must be a C<DBD::*> driver for it,
as C<Alzabo::Driver> is built on top of C<DBI>.
Here's a sample header to the module using a fictional RDBMS called FooDB:
package Alzabo::Driver::FooDB;
use strict;
use vars qw($VERSION);
use Alzabo::Driver;
use DBI;
( run in 0.923 second using v1.01-cache-2.11-cpan-5837b0d9d2c )