The URL
ftp://ftp.dev.ecos.de/pub/perl/dbi/DBIx-Recordset-0.20-beta.tar.gz
has entered CPAN as
file: $CPAN/authors/id/GRICHTER/DBIx-Recordset-0.20-beta.tar.gz
size: 74149 bytes
md5: 1c62da99c88b86474064a5de8f01a931
While the last release of DBIx::Recordset was really a long time ago I have
continously worked on it and enhanced it (see Changes below) and it's tested
with even more DBD drivers now.
I just didn't have the time to complete the docs and make a new release.
Hopefully this will change in the future. Now I have taken the time and here
is it...
Enjoy
Gerald
DBIx::Recordset is a perl module which handles a lot of always repeating
tasks in database access for you.
The goal is to make standard database access (select/insert/update/delete)
easier to handle (e.g. web application or scripts to enter/retrieve
data to/from a database). Special attention is made on web applications to
make
it possible to handle the state-less access and to process the posted data
of formfields.
The programmer only has to supply the absolutely necessary information, the
rest is done by DBIx::Recordset.
The main features of DBIx::Recordset are:
- it has a compact interface, normaly only one function call is necessary
for setup and data retrival/inseration/deletion
- it takes care about type conversion and quoting
- it is able to access/modify tables via arrays and hashs
- it can automaticly create sub-objects for tables which are logical linked
together
- it can automatily create joins based on logical links
- it has input/output filters on a per field/per type basis
- it can create WHERE expression from a hash, which is especially usefull in
a cgi environement, where you can simply pass all paramters posted to your
cgi
script to DBIx::Recordset and DBIx::Recordset creates an corresponding
SELECT.
- it can create previous/next buttons for html output
- it works together with HTML::Embperl for easily genration of HTML output
- it has an own database abtraction class DBIx::Compat which gives all the
necessary information, so that DBIx::Recordset is able to work with
different database systems
- The new class DBIx::Database is able to retrieve and store meta infomation
of the database in a centralised location, which can be used for later
setup. This is also usefull when running under mod_perl, because you can
do
all the setup and configuration work at webserver startup time, speeding
up
your scripts when a actual request is processed.
An introduction can be viewed online at
http://perl.apache.org/embperl/Intrors.pod.cont.html
DBIx::Recordset use the DBI API to access the database, so it should work
with
every database for which a DBD driver is available. I (or other people) have
successfully used DBIx::Recordset with the following DBD drivers:
- DBD::mSQL
- DBD::mysql
- DBD::Pg
- DBD::Solid
- DBD::ODBC
- DBD::Oracle (requires DBD::Orcale 0.60 or higher)
- DBD::Sybase
- DBD::CSV
- DBD::Informix
Changes since 0.19-beta:
- Fixed a problem with perl 5.004_04. Spotted by Paul J. Schinder.
- Added entry for DBD::Informix in Compat.pm send by Kelly Peet
- Added outer join syntax for DBD::Informix
- undef in !Filter passed to Recordset constructor overrides
filter-function for TableAttr.
- Fixed a problem with PrevNextForm and MoreRecord spotted by
Richard Chen and David M. Davission.
- Fixed some problems with eg/search.pl with help from
Richard Chen.
- Added date and time datatype to PostgreSQL quoting with help
from James Bishop.
- Added LastError function which returns the last error message
and code. This solves problems where the DBI object is already
out of scope and the $DBI::errstr isn't available anymore.
- Now all setup parameters (the ones starting with !), can also
be preset via DBIx::Database -> TableAttr.
- Fix a problem, that an error that sets $@ inside of DESTROY
will clear out an earlier error message. Based on a patch from
Dean Brettle.
- !Filter can take a thrid argument, which will cause
DBIx::Recordset to always execute the Input Filter
- Fixed a problem inside Flush, which will report sometime
'Not a scalar reference..'
- DBIx::Recordset handle uppercase field and tablesnames correctly
now. This is important to work with Oracle.
- New Parameter !TableFilter allows you to specify only a subset
of tables from the database/tablespace to work with
- !TableFilter is taken in account as prefix when searching
for links
- Added NeedNullInCreate for ODBC to work with MS SQL Server
- Recordset Object didn't get the DBHandle from Database object if
specified as !DataSource. Now it does. (Database object must
be created with !KeepOpen)
- !Filter can take rqINSERT or rqUPDATE as Argument after subref,
which causes the Filter to always execute on INSERT and/or UPDATE,
regardless, if there is a value for the field or not.
- Added methods TableName, TableNameWithoutFilter, TableFilter and
PrimKey.
- Support multiple Database object with different !TableFilter.
- !LongNames is now also supported for SELECTs which select not all,
but a specified number of fields (i.e. fields are ne '*').
- DBIx::Database TableLink method, returns all Links for a given
table when no linkname is given.
- Added more tests to ensure that new feature do not break old ones.
- removed call to non existing method $dbh->begin and call
$dbh->commit and $dbh->rollback only when AutoCommit is off, so
the DBIx::Recordset transaction methods, can be called regardless, if
the DB supports transactions or not. Patch from Alexander Smishlajev.
- make clean removes test.log and make realclean remove privious
configuration. Patch from Alexander Smishlajev.
- !DataSource can be a DBI database handle. Patch from Alexander
Smishlajev.
- New method Dirty check if there is at leat one dirty row in a recordset.
Patch from Alexander Smishlajev.
- DROP test tables at end of test. Patch from Alexander Smishlajev.
- DBIx::Database now makes an connect to the database if KeepOpen is set
and the object is taken from an already stored one.
- Flush will call finish on open statement handles to avoid statement
handles that stay open to long.
- Add new parameter !DoOnConnect, which lets you specify any SQL statement
that should be execute after each connect.
- PrevNextForm could now take a hash ref as parameter and
addtionaly generate first, last and goto buttons
- Documentation updates.
- Added patch from Klaus Reger to avoid warning about undefined value
in DESTROY.
- Added more datatypes to quote for Pg and Oracle. Patch from Klaus Reger.
- Undef values in where expression are transfored to "is null" operators,
also when using placeholders.
- DBIx::Recordset now uses always bind_param, to avoid problems with
quoting
and to speed up things. This means DBD drivers which does not support
placesholdes will not work anymore with DBIx::Recordset, but all
DBD drivers I know, supports now placesholder, so there should be no
problem.
This also remove an potetial insecure eval form the BuildWhere function.
- DBIx::Recordset::Flush will update all dirty rows, also if some of them
can't be written to the
database. Patch from Alexander Smishlajev.
- DBIx::Recordset::Row::Flush make sure that exactly one row is updated.
Based
on a patch from Alexander Smishlajev.
- By setting $FetchsizeWarn to zero, you can now make DBIx::Recordset
return
the value of $sth -> rows, when the FETCHSIZE method is called by Perl.
This feature is still experimental, because I don't what different DBMS
returns in $sth -> rows, after an SELECT. Patch from Robert.
- By setting $PreserveCase, you can cause DBIx::Recordset to _not_
translate all
names to lowercase. Per default DBIx::Recordset translates all names
(tablenames/
fieldnames) to lowercase to let application work with different DBMS.
- Updated docs of DBIx::Compat.
- If the DBMS supports it, DBIx::Recordset will use the LIMIT/OFFSET
keywords if you
only want to fetch a limited number of row from the database (for
parameters
$start and $max). Patch from Robert.
- Added an indroduction to DBIx::Recordset (based on my talk on the 1999
Perl conference)
which is viewable with perldoc Intrors.pod
-------------------------------------------------------------
Gerald Richter ecos electronic communication services gmbh
Internetconnect * Webserver/-design/-datenbanken * Consulting
Post: Tulpenstrasse 5 D-55276 Dienheim b. Mainz
E-Mail: [EMAIL PROTECTED] Voice: +49 6133 925151
WWW: http://www.ecos.de Fax: +49 6133 925152
-------------------------------------------------------------