DBIx::HTMLView::DB - A generic DBI databse with SQL interface


NAME

  DBIx::HTMLView::DB - A generic DBI databse with SQL interface


SYNOPSIS

use DBIx::HTMLView; my $dbi=my $dbi=DB(``DBI:mSQL:HTMLViewTester:localhost'', ``'', ``'', Table ('Test', Id('id'), Str('testf'))); my $hist=$dbi->tab('Test')->list();


DESCRIPTION

The DB object is usualy only used to represent the top level database and to access the diffrent tabel objects. But all databse communications is routed through it.

This class is intended as a generic base class it is then inherited by engine specifik classes such as DBIx::HTMLView::msqlDB and DBIx::HTMLView::mysqlDB. If you plan to use this with another database engine you'll probably have to atleast overide the insert sub to handle the assignmet of id values to new posts correctly.


METHODS =cut

package DBIx::HTMLView::DB; use strict;

use DBI; use Carp;

$dbi=DBIx::HTMLView::DB->new($db, $user, $pass, @tabs) =head2 $dbi=DBIx::HTMLView::DB->new($dbh, @tabs)

Creates a new database representation to the database engine represented by the DBI data_source $db and connect's to it using $user and $pass as user name and pasword. @tabs is a list of the tables contained in the database in form of DBIx::HTMLView::Table objects.

If you'r db needs more initialising than a DBI connect you can initialise the connection yourself and then pass the dbh (as returned by the DBI->connect call) using the second form of the constructor.

The database connection will not be closed untill this object is destroyed.

$dbi->send($cmd)

Will prepare and send the SQL command $cmd to the database and it dies on errors. The $sth is returned.

$dbi->tab($tab)

Returns the DBIx::HTMLView::Table object representing the table named $tab.

$dbi->tabs

Returns an array of DBIx::HTMLView::Table objects representing all the tables in the database.

$dbi->sql_escape

Escapes the supplied string to be valid inside an SQL command. That is, it changes the string q[I'm a string] to q['I\'m a string'];

$dbi->del($tab, $id)

Deletes the post with id $id form the table $tab (a DBIx::HTMLView::Table object).

$dbi->update($tab, $post)

Updates the data in the database of the post represented by $post (a DBIx::HTMLView::Post object) in the table $tab (a DBIx::HTMLView::Table object) with the data contained in the $post object.

$dbi->insert($tab, $post)

Insert the post $post (a DBIx::HTMLView::Post object) into the table $tab (a DBIx::HTMLView::Table object). This is the method to override if you need to change the way new post get's their id numbers assigned. This method should also make sure to set the id fld of $post to the id assigned to it.

$dbi->sql_create

Will create the tables of the database using SQL commands that works with msql. The database has to be created by hand using msqladmin or msqlconfig.

$dbi->sql_create_table($table)

Creates the table $table, a DBIx::HTMLView::Table object, using SQL commands that works with msql.

$dbi->sql_type($type, $fld)

Returns the SQL type string used for the type $type of the Fld $fld. $type should be one of ``Id'', ``Int'', ``Str'', ``Text'', ``Bool'', ``Date'' and $fld should be a DBIx::HTMLView::Fld object.

 DBIx::HTMLView::DB - A generic DBI databse with SQL interface