Data::ObjectDriver::DrUser:Contributed Perl Data::ObjectDriver::Driver::DBD(3)NAMEData::ObjectDriver::Driver::DBD - base class for database drivers
SYNOPSIS
package SomeObject;
use base qw( Data::ObjectDriver::BaseObject );
__PACKAGE__->install_properties({
...
driver => Data::ObjectDriver::Driver::DBI->new(
...
dbd => Data::ObjectDriver::Driver::DBD->new('mysql'),
),
});
DESCRIPTIONData::ObjectDriver::Driver::DBD is the base class for database drivers.
Database drivers handle the peculiarities of specific database servers
to provide an abstract API to the object drivers. While database
drivers operate on queries and database concepts like the last insert
ID and binding attributes for a query, object drivers operate on
objects higher level concepts like caching and partitioning.
Database drivers are used with "Data::ObjectDriver::Driver::DBI" object
drivers. If you are making an object driver that doesn't use "DBI", you
do not need a database driver; implement your custom behavior in your
"Data::ObjectDriver" subclass directly.
USAGE
"Data::ObjectDriver::Driver::DBD->new($name)"
Creates a new database driver of the given subclass type. That is,
"new('mysql')" would create a new instance of
"Data::ObjectDriver::Driver::DBD::mysql".
"$dbd->init_dbh($dbh)"
Initializes the given database handle connected to this driver's type
of database.
By default, no operation is performed. Override this method if your
type of database must do further initialization that other database
servers don't need, such as setting an operative time zone.
"$dbd->bind_param_attributes($type)"
Returns a hashref to pass to the "DBI" statement method "bind_param",
to describe the SQL type of a column defined as $type in an object
class's "column_defs" mapping.
By default, no operation is performed. Override this method if your
type of database needs such type hinting for some fields, such as
specifying a parameter is a "BLOB".
Note that object classes must define your custom types in their
"column_defs" mappings for those classes to be compatible with your
"DBD". Make sure to document any custom types you implement.
"$dbd->db_column_name($datasource, $column)"
Returns a decorated column name. For example, if your database requires
column names to be prepended with table names, that concatenation would
occur in this method.
By default, "db_column_name" returns the column name unmodified.
"$dbd->fetch_id()"
Returns the autogenerated ID of the most recently inserted record, or
"undef" if this feature is not supported.
By default, "fetch_id" returns "undef".
"$dbd->map_error_code($code, $msg)"
Returns a "Data::ObjectDriver::Errors" code for the given database
error, or "undef" if no equivalent has been defined.
By default, "map_error_code" returns "undef" for every error.
"$dbd->sql_for_unixtime()"
Returns the SQL for querying the current UNIX time on the database
server, or a UNIX time to use as the remote time.
By default, "sql_for_unixtime" returns the value of perl "time()" on
the local machine.
"$dbd->offset_implemented()"
Returns true if the database this driver represents supports "OFFSET"
clauses.
By default, "offset_implemented" returns true.
"$dbd->can_delete_with_limit()"
Returns true if the database this driver represents supports "LIMIT"
clauses on "DELETE" statements.
By default, "can_delete_with_limit" returns false.
"$dbd->can_prepare_cached_statements()"
Returns true if the database this driver can cope with preparing a
cached statement.
By default, "can_delete_with_limit" returns true.
"$dbd->is_case_insensitive()"
Returns true if the database this driver represents normally compares
string fields case insensitively.
By default, "is_case_insensitive" returns false.
"$dbd->can_replace()"
Returns true if the database this driver represents supports "REPLACE
INTO" statements.
By default, "can_replace" returns false.
"$dbd->force_no_prepared_cache()"
Returns false if the database this driver represents supports the
"prepare_cached" method on its DBI database handles.
By default, "force_no_prepared_cache" returns false.
"$dbd->sql_class()"
Provides the package name of the class responsible for representing SQL
queries. This method returns 'Data::ObjectDriver::SQL', but may be
overridden to return a package that has a similar interface but
produces SQL that is compatible with that DBD driver. The package
provided must already be loaded and available for use.
LICENSE
Data::ObjectDriver is free software; you may redistribute it and/or
modify it under the same terms as Perl itself.
AUTHOR & COPYRIGHT
Except where otherwise noted, Data::ObjectDriver is Copyright 2005-2006
Six Apart, cpan@sixapart.com. All rights reserved.
perl v5.14.12010-03-22Data::ObjectDriver::Driver::DBD(3)