---
name: "Bio::DB::GFF::Adaptor::dbi::caching_handle"
section: "3pm"
platform: "linux"
package: "libbio-db-gff-perl"
version: "1.7.4-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Bio::DB::GFF::Adaptor::dbi::caching_handle"
---

# Bio::DB::GFF::Adaptor::dbi::caching\_handle(3pm)

## NAME

Bio::DB::GFF::Adaptor::dbi::caching\_handle -- Cache for database handles

## SYNOPSIS

```
 use Bio::DB::GFF::Adaptor::dbi::caching_handle;
 $db  = Bio::DB::GFF::Adaptor::dbi::caching_handle->new('dbi:mysql:test');
 $sth = $db->prepare('select * from foo');
 @h   = $sth->fetch_rowarray;
 $sth->finish
```

## DESCRIPTION

This module handles a pool of database handles.  It was motivated by the MYSQL driver's {mysql\_use\_result} attribute, which dramatically improves query speed and memory usage, but forbids additional query statements from being evaluated while an existing one is in use.

This module is a plug-in replacement for vanilla DBI.  It automatically activates the {mysql\_use\_result} attribute for the mysql driver, but avoids problems with multiple active statement handlers by creating new database handles as needed.

## USAGE

The object constructor is Bio::DB::GFF::Adaptor::dbi::caching\_handle-\>**new()**.  This is called like DBI-\>**connect()** and takes the same arguments.  The returned object looks and acts like a conventional database handle.

In addition to all the standard DBI handle methods, this package adds the following:

### dbi\_quote

```
 Title   : dbi_quote
 Usage   : $string = $db->dbi_quote($sql,@args)
 Function: perform bind variable substitution
 Returns : query string
 Args    : the query string and bind arguments
 Status  : public
```

This method replaces the bind variable "?" in a SQL statement with appropriately quoted bind arguments.  It is used internally to handle drivers that don't support argument binding.

### do\_query

```
 Title   : do_query
 Usage   : $sth = $db->do_query($query,@args)
 Function: perform a DBI query
 Returns : a statement handler
 Args    : query string and list of bind arguments
 Status  : Public
```

This method performs a DBI **prepare()** and **execute()**, returning a statement handle.  You will typically call **fetch()** of **fetchrow\_array()** on the statement handle.  The parsed statement handle is cached for later use.

### debug

```
 Title   : debug
 Usage   : $debug = $db->debug([$debug])
 Function: activate debugging messages
 Returns : current state of flag
 Args    : optional new setting of flag
 Status  : public
```

### attribute

```
 Title   : attribute
 Usage   : $value = $db->attribute(AttributeName , [$newvalue])
 Function: get/set DBI::db handle attribute
 Returns : current state of the attribute
 Args    : name of the attribute and optional new setting of attribute
 Status  : public
  Under Bio::DB::GFF::Adaptor::dbi::caching_handle the DBI::db
  attributes that are usually set using hashref calls are unavailable.
  Use attribute() instead.  For example, instead of:
    $dbh->{AutoCommit} = 0;
  use
    $dbh->attribute(AutoCommit=>0);
```

## BUGS

Report to the author.

## SEE ALSO

DBI, Bio::DB::GFF, bioperl

## AUTHOR

Lincoln Stein \<lstein@cshl.org\>.

Copyright (c) 2001 Cold Spring Harbor Laboratory.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
