NAME
DBIx::Simplish - DBIx::Simple + DBIx::Connector + extras.
VERSION
version 1.002001
SYNOPSIS
DBIx::Simplish
$db = DBIx::Simplish->new(dsn => ..., user => ..., password => ..., ...)
$db = DBIx::Simplish->connect(...)
$db->keep_statements = 16
$db->lc_columns = 1
$db->begin_work $db->commit
$db->rollback $db->disconnect
$db->func(...) $db->last_insert_id
$result = $db->query(...)
$result = $db->iquery('INSERT INTO table', \%item)
$result = $db->iquery('UPDATE table SET', \%item, 'WHERE y <> ', \2)
$result = $db->iquery('DELETE FROM table WHERE y = ', \2)
$result = $db->iquery('SELECT * FROM table WHERE x = ', \$s, 'AND y IN', \@v)
$result = $db->iquery('SELECT * FROM table WHERE', {x => $s, y => \@v})
$result = $db->select($table, \@fields, \%where, \@order)
$result = $db->insert($table, \%fieldvals || \@values)
$result = $db->update($table, \%fieldvals, \%where)
$result = $db->delete($table, \%where)
# Only for MySQL
$result = $db->call($procedure, @args)
DBIx::Simplish::Result
@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
@row = $result->kv_list @rows = $result->kv_flat
$row = $result->kv_array @rows = $result->kv_arrays
%map = $result->map_arrays(...)
%map = $result->map_hashes(...)
%map = $result->map
$rows = $result->rows
$dump = $result->text
$result->finish
DESCRIPTION
DBIx::Simplish has (mostly) the same interface as DBIx::Simple. It's a rewrite to add little bits I wanted, and remove some bits I never used. Maybe you'll find it useful too.
DBIx::Simplish is backed by DBIx::Connector, SQL::Abstract and SQL::Interp.
Differences from DBIx::Simple
Automatically enables UTF-8 when using MySQL or SQLite.
Automatically sets proper quotes and limit dialect on SQL::Abstract::Limit methods when using MySQL or SQLite
Uses SQL::Abstract::Limit instead of SQL::Abstract.
Can call
last_insert_id
without parameter when using MySQL or SQLite.The omniholder
(??)
is a bit smarter.Can't set result class. It's always DBIx::Simplish::Result.
No fancy error handling returning dummy objects.
SQL::Abstract::Limit and SQL::Interp are now dependencies. Not recommendations.
xto
,html
andtext
methods removed.object
andobjects
methods of result class no longer has a default implementation. You must always provide a class name.
ATTRIBUTES
dsn
Sets the connection DSN. See DBI.
user
Sets the connection user naem.
password
Sets the connecton password.
options
Set the DBI options. See DBI.
connector
Sets the DBIx::Connector instance to use for connections. If not set, a new instance will be created. If set dsn, user, password and options attributes will be ignored.
keep_statements
Sets the number of statements to keep in cache. See also keep_statements in DBIx::Simple.
lc_columns
Set to true to use lower case column names. See also lc_columns in DBIx::Simple
abstract
Sets the SQL::Abstract instance to use for SQL generation. If not set, a new instance will be created.
connection_mode
Sets the DBIx::Connecter connection mode. Valid values are 'ping', 'fixup' and 'no_ping'. Default value 'fixup'.
sql_quote_char
Set the SQL quote char to use. See also quote_char in SQL::Abstract Default value is ` for MySQL and " for SQLite.
sql_name_sep
Sets the SQL name seperator char to use See also name_sep in SQL::Abstract. Default value is . for MySQL and SQLite.
METHODS
connect($dsn, $user, $pass, \%options)
Constructor. Same arguments as for DBI connect. See DBI for details. Same as
DBIx::Simplish->new(dsn => $dsn, user => $user, password => $pass, options => \%options);
query($query, @binds)
Prepares and executes the query and returns a result object.
If the string (??) is present in the query, it is replaced with a list of as many question marks as @binds minus number of ordinary ? binds.
The database drivers substitute placeholders (question marks that do not appear in quoted literals) in the query with the given @binds, after them escaping them. You should always use placeholders, and never use raw user input in database queries.
On success, returns a DBIx::Simplish::Result object.
select, insert, update, query
Calls the corresponding SQL::Abstract::Limit method. The resulting query and binds is then passed to the query
method.
See also: SQL::Abstract and SQL::Abstract::Limit.
iquery
Calls SQL::Interp's sql_interp
method. Sends the resulting query and binds to the query
method.
See also: SQL::Interp.
call
Shortcut for calling a MySQL procedure. $db->call($procedure_name, @args)
is equivalent to $db->query("CALL $procedure_name(??)", @args)
.
func
Proxy for func
method of DBI
last_insert_id
Calls the last_insert_id
method of DBI
Can be called without parameters for MySQL and SQLite (no more last_insert_id(undef, undef, undef, undef)
).
begin_work
Proxy for begin_work
method of DBI.
begin
Alias for begin_work
.
commit
Proxy for commit
method of DBI.
rollback
Proxy for rollback
method of DBI.
error
Proxy for errstr
method of DBI.
TODO
Add more - and better - documentation.
SEE ALSO
DBIx::Simple, DBIx::Connector, SQL::Abstract and SQL::Interp.
AUTHOR
Hans Staugaard <staugaard@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2016 by Hans Staugaard.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.