DBIx::Simple
Easy-to-use OO interface to DBI
- Provided by: libdbix-simple-perl (Version: 1.32-1)
- Report a bug
Easy-to-use OO interface to DBI
$db = DBIx::Simple->connect(...) # or ->new
$db->keep_statements = 16
$db->lc_columns = 1
$db->result_class = 'DBIx::Simple::Result';
$db->begin_work $db->commit
$db->rollback $db->disconnect
$db->func(...) $db->last_insert_id
$result = $db->query(...)
$result = $db->iquery(...)
$db->abstract = SQL::Abstract->new(...)
$result = $db->select(...)
$result = $db->insert(...)
$result = $db->update(...)
$result = $db->delete(...)
@columns = $result->columns
$result->into($foo, $bar, $baz)
$row = $result->fetch
@row = $result->list @rows = $result->flat
$row = $result->array @rows = $result->arrays
$row = $result->hash @rows = $result->hashes
%map = $result->map_arrays(...)
%map = $result->map_hashes(...)
%map = $result->map
$rows = $result->rows
$dump = $result->text
$result->finish
$html = $result->html(...)
$table_object = $result->xto(...)
Please read DBIx::Simple::Examples for code examples.
DBIx::Simple provides a simplified interface to DBI, Perl's powerful database module.
This module is aimed at rapid development and easy maintenance. Query preparation and execution are combined in a single method, the result object (which is a wrapper around the statement handle) provides easy row-by-row and slurping methods.
The "query" method returns either a result object, or a dummy object. The dummy object returns undef (or an empty list) for all methods and when used in boolean context, is false. The dummy object lets you postpone (or skip) error checking, but it also makes immediate error checking simply "$db->query(...) or die $db->error".
You cannot use this method to clone a DBIx::Simple object: the $dbh passed should be a DBI::db object, not a DBIx::Simple object.
This method is the constructor and returns a DBIx::Simple object on success. On failure, it returns undef.
A query is only reused if it equals a previously used one literally. This means that to benefit from this caching mechanism, you must use placeholders and never interpolate variables yourself.
# Wrong:
$db->query("INSERT INTO foo VALUES ('$foo', '$bar', '$baz')");
$db->query("SELECT FROM foo WHERE foo = '$foo' OR bar = '$bar'");
# Right:
$db->query('INSERT INTO foo VALUES (??)', $foo, $bar, $baz);
$db->query('SELECT FROM foo WHERE foo = ? OR bar = ?', $foo, $baz);
Of course, automatic value escaping is a much better reason for using placeholders.
If the string "(??)" is present in the query, it is replaced with a list of as many question marks as @values.
The database drivers substitute placeholders (question marks that do not appear in quoted literals) in the query with the given @values, after them escaping them. You should always use placeholders, and never use raw user input in database queries.
On success, returns a DBIx::Simple::Result object.
On failure, returns a DBIx::Simple::Dummy object.
See SQL::Interp's documentation for usage information.
Requires that Mark Stosberg's SQL::Interp module be installed. It is available from CPAN. SQL::Interp is a fork from David Manura's SQL::Interpolate.
See SQL::Abstract's documentation for usage information. You can override the object by assigning to the "abstract" property.
Obviously, calling "query" directly is faster for the computer and using these abstracting methods is faster for the programmer.
Requires that Nathan Wiger's SQL::Abstract module be installed. It is available from CPAN.
In theory, you can assign any object to this property, as long as that object has these four methods, and they return a list suitable for use with the "query" method.
"begin" is an alias for "begin_work".
The "query" method of DBIx::Simple returns a dummy object on failure. Its methods all return an empty list or undef, depending on context. When used in boolean context, a dummy object evaluates to false.
Column names are lower cased if "lc_columns" was true when the query was executed.
$result->bind(my ($foo, $bar));
$result->fetch;
Or, combined:
$result->into(my ($foo, $bar));
Unlike with DBI's "bind_columns", the "\" operator is not needed.
Bound variables are very efficient. Binding a tied variable doesn't work.
Subsequent fetches (using any method) may change the values in the variables passed and the returned reference's array.
Keys are lower cased if "lc_columns" was true when the query was executed.
In scalar context, returns an array reference.
In scalar context, returns an array reference.
In scalar context, returns an array reference.
Keys are lower cased if "lc_columns" was true when the query was executed.
In scalar context, returns a hash reference.
In list context, returns interleaved keys and values.
In scalar context, returns a hash reference.
In list context, returns interleaved keys and values.
In scalar context, returns a hash reference.
In list context, returns interleaved keys and values.
For SELECT statements, it is generally not possible to know how many rows are returned. MySQL does provide this information. See DBI for a detailed explanation.
Requires that Jeffrey Hayes Anderson's DBIx::XHTML_Table module be installed. It is available from CPAN.
In general, using the "html" method (described below) is much easier. "xto" is available in case you need more flexibility.
This method ignores the "lc_columns" property.
Requires that Jeffrey Hayes Anderson's DBIx::XHTML_Table module be installed. It is available from CPAN.
This method is a shortcut method. That means that
$result->html
$result->html(
tr => { bgcolor => [ 'silver', 'white' ] },
no_ucfirst => 1
)
do the same as:
$result->xto->output
$result->xto(
tr => { bgcolor => [ 'silver', 'white' ] }
)->output(
no_ucfirst => 1
);
"table" and "box" require that Anno Siegel's Text::Table module be installed. It is available from CPAN.
The mapping methods do not check whether the keys are unique. Rows that are fetched later overwrite earlier ones.
PrintError is disabled by default. If you enable it, beware that it will report line numbers in DBIx/Simple.pm.
There is no license. This software was released into the public domain. Do with it what you want, but on your own risk. The author disclaims any responsibility.
Juerd Waalboer <juerd@cpan.org> <http://juerd.nl/>
perl, perlref
DBI, DBIx::Simple::Examples, SQL::Abstract, DBIx::XHTML_Table