NAME

XAO::DO::FS::Glue::Connect_SQL - basic SQL connection

SYNOPSIS

Only provides pure virtual methods that are overriden in actual drivers.

DESCRIPTION

METHODS

sql_connect (%)

Establishes a connection to the database engine given. Arguments are:

dsn        => data source name (DBI:dbname:options)
user       => optional user name
password   => optional password
sql_connected ()

Returns true if the database connection is currently established.

sql_disconnect ()

Closes connection to the database.

sql_do ($;@)

Sends a single query to the database with no anticipation of any results. Can take arguments just the way prepare/execute do.

It is allowed to call sql_do() with an array reference in the second argument.

sql_execute ($;@)

Executes a previously prepared statement optionally substituting some values, see sql_prepare(). Example:

my $pq=$self->sql_prepare("SELECT a,b FROM c WHERE d=?");
foreach my $value (1..10) {
    $self->sql_execute($pq,$i);
    ...
}

As a shortcut it can also accept a text query in the first argument instead of manually calling sql_prepare() first. It is suggested to do so whenever you plan to call sql_execute() just once.

It is allowed to call sql_execute() with an array reference in the second argument.

Returns a piece of data that should be passed into sql_fetch_row() method.

When done sql_finish() should be called with the return value of sql_execute() as a parameter.

sql_fetch_row ($)

Returns a reference to an array containing next retrieved row. Example:

my $qr=$self->sql_execute("SELECT a,b FROM c");
my $row=$self->sql_fetch_row($qr);

Don't forget to call sql_finish() when you're done.

sql_finish ($)

Frees up whatever internal structures might be occupied as a result of the previous call to sql_execute(). Example:

my $qr=$self->sql_execute("SHOW TABLES");
...
$self->sql_finish($qr);
sql_first_column ($)

An optimisation method -- returns a reference to the array containing all first elements of each row of the results set. Example:

my $qr=$self->sql_execute("SELECT unique_id FROM a");
my $ids=$self->sql_first_column($qr);

There is no need to call sql_finish() after sql_first_column().

sql_first_row ($)

An optimisation method -- returns a reference to the first row and finished the query.

my $qr=$self->sql_execute("SELECT a,b,c FROM t WHERE d=?",$uid);
my $row=$self->sql_first_row($qr);

There is no need to call sql_finish() after sql_first_row().

sql_prepare ($)

Prepares a query for subsequent execution using sql_execute() method. Guaranteed to return a reference of some sort. Example:

my $pq=$self->sql_prepare("SELECT a,b FROM c WHERE d=?");
$self->sql_execute($pq,123);

AUTHORS

Copyright (c) 2005,2007 Andrew Maltsev

Copyright (c) 2001-2004 Andrew Maltsev, XAO Inc.

<am@ejelta.com> -- http://ejelta.com/xao/

SEE ALSO

Further reading: XAO::FS, XAO::DO::FS::Glue.