Easy to use dbi interface
use DBIx::Easy; my $dbi_interface = new DBIx::Easy qw(Pg template1);
$dbi_interface -> insert ('transaction', id => serial ('transaction', 'transactionid'), time => \$dbi_interface -> now);
$dbi_interface -> update ('components', "table='ram'", price => 100); $rows_deleted = $dbi_interface -> delete ('components', 'stock = 0'); $dbi_interface -> makemap ('components', 'id', 'price', 'price > 10'); $components = $dbi_interface -> rows ('components'); $components_needed = $dbi_interface -> rows ('components', 'stock = 0');
DBIx::Easy is an easy to use \s-1DBI\s0 interface. Currently the Pg, mSQL, mysql, Sybase, \s-1ODBC\s0 and XBase drivers are supported.
$dbi_interface = new DBIx::Easy qw(Pg template1); $dbi_interface = new DBIx::Easy qw(Pg template1 racke); $dbi_interface = new DBIx::Easy qw(Pg template1 racke aF3xD4_i); $dbi_interface = new DBIx::Easy qw(Pg template1 [email protected] aF3xD4_i); $dbi_interface = new DBIx::Easy qw(Pg template1 [email protected]:3306 aF3xD4_i);
The required parameters are the database driver and the database name. Additional parameters are the database user and the password to access the database. To specify the database host use the USER@HOST notation for the user parameter. If you want to specify the port to connect to use USER@HOST:PORT.
It is important that you commit all changes at the end of the interaction with the \s-1DBMS\s0. You can either explicitly commit
$dbi_interface -> commit ();
or do it implicitly:
undef $dbi_interface;
sub fatal { my ($statement, $err, $msg) = @_; die ("$0: Statement \"$statement\" failed (ERRNO: $err, ERRMSG: $msg)\n"); } $dbi_interface -> install_handler (\&fatal);
If any of the \s-1DBI\s0 methods fails, either die will be invoked or an error handler installed with install_handler will be called.
By default, this module caches table structures. This can be disabled by setting $DBIx::Easy::cache_structs to 0.
The DBIx::Easy method rows fails to work with the DBD::XBase driver.
\$1
$sth = $dbi_interface -> process ("SELECT * FROM foo"); print "Table foo contains ", $sth -> rows, " rows.\n"; Processes statement by just combining the prepare and execute steps of the \s-1DBI\s0. Returns statement handle in case of success.
$sth = $dbi_interface -> insert ('bar', drink => 'Caipirinha'); Inserts the given column/value pairs into table. Determines from the \s-1SQL\s0 data type which values has to been quoted. Just pass a reference to the value to protect values with \s-1SQL\s0 functions from quoting.
$dbi_interface -> update ('components', "table='ram'", price => 100); $dbi_interface -> update ('components', "table='ram'", price => \"price + 20"); Updates any row of table which fulfill the conditions by inserting the given column/value pairs. Scalar references can be used to embed strings without further quoting into the resulting \s-1SQL\s0 statement. Returns the number of rows modified.
$dbi_interface -> delete ('components', "stock=0"); Deletes any row of table which fulfill the conditions. Without conditions all rows are deleted. Returns the number of rows deleted.
$components = $dbi_interface -> rows ('components'); $components_needed = $dbi_interface -> rows ('components', 'stock = 0'); Returns the number of rows within table satisfying conditions if any.
$dbi_interface -> makemap ('components', 'idf', 'price'); $dbi_interface -> makemap ('components', 'idf', 'price', 'price > 10'); $dbi_interface -> makemap ('components', 'idf', '*'); $dbi_interface -> makemap ('components', 'idf', '*', 'price > 10'); Produces a mapping between the values within column keycol and column valcol from table. If an condition is given, only rows matching this condition are used for the mapping. In order to get the hash reference to the record as value of the mapping, use the asterisk as the valcol parameter.
Returns random row of the specified table. If map is set, the result is a hash reference of the selected row, otherwise an array reference. If the table doesn't contains rows, undefined is returned.
Returns a serial number for table by querying the next value from sequence. Depending on the \s-1DBMS\s0 one of the parameters is ignored. This is sequence for mSQL resp. table for PostgreSQL. mysql doesn't support sequences, but the \s-1AUTO_INCREMENT\s0 keyword for fields. In this case this method returns 0 and mysql generates a serial number for this field.
Fetches the next table row from the result stored into sth and records the value of each field in hashref. If flag is set, only the fields specified by the column arguments are considered, otherwise the fields specified by the column arguments are omitted.
foreach my $table (sort $dbi_interface -> tables) { print $cgi -> h2 ('Contents of ', $cgi -> code ($table)); print $dbi_interface -> view ($table); } Produces plain text representation of the database table table. This method accepts the following options as name/value pairs: columns: Which columns to display. order: Which column to sort the row after. limit: Maximum number of rows to display. separator: Separator inserted between the columns. where: Display only rows matching this condition. print $dbi_interface -> view ($table, order => $cgi -> param ('order') || '', where => "price > 0");
Returns truth value if there exists a table \s-1NAME\s0 in this database.
Returns list of all tables in this database.
Returns list of all sequences in this database (Postgres only).
Returns list of the column names of \s-1TABLE\s0.
Returns list of the column types of \s-1TABLE\s0.
Returns list of the column sizes of \s-1TABLE\s0.
Returns mapping between column names and column types for table \s-1TABLE\s0.
Returns mapping between column names and column sizes for table \s-1TABLE\s0.
$dbi_interface -> insert ('transaction', id => serial ('transaction', 'transactionid'), time => \$dbi_interface -> now); Returns representation for the current time. Uses special values of the \s-1DBMS\s0 if possible.
Converts the monetary value money to a numeric one.
This method decides if the error message msg is caused by an authentification error or not.
Stefan Hornburg (Racke), [email protected] Dennis Sch\[:o]n, [email protected]
Support for Sybase and \s-1ODBC\s0 provided by David B. Bitton <[email protected]>.
0.17
perl\|(1), \s-1DBI\s0\|(3), DBD::Pg\|(3), DBD::mysql\|(3), DBD::msql\|(3), DBD::Sybase\|(3), \s-1DBD::ODBC\s0\|(3).