Bio::EnsEMBL::ExternalData::SangerSNP DBConnection
SummaryIncluded librariesPackage variablesSynopsisDescriptionGeneral documentationMethods
Toolbar
WebCvsRaw content
Summary
Bio::EnsEMBL::ExternalData::SangerSNP::DBConnection -
Database connection object for a SangerSNP database
Package variables
No package variables defined.
Included modules
Bio::EnsEMBL::DBSQL::DBConnection
Bio::EnsEMBL::Utils::Argument qw ( rearrange )
Bio::EnsEMBL::Utils::Exception qw ( throw info warning )
DBI
Inherit
Bio::EnsEMBL::DBSQL::DBConnection
Synopsis
    $dbc = Bio::EnsEMBL::DBSQL::DBConnection->new(
-user => 'anonymous',
-dbname => 'snp',
-host => 'ocs4',
-driver => 'Oracle',
-species => 'Homo Sapiens',
-group => 'sangersnp'
);
SQL statements should be created/executed through this modules prepare() and do() methods. $sth = $dbc->prepare( "SELECT something FROM yourtable" ); $sth->execute(); # do something with rows returned ... $sth->finish();
Description
  This class is a wrapper around DBIs datbase handle.
Generally this class will be used through one of the object adaptors or the Bio::EnsEMBL::Registry and will not be instantiated directly.
Methods
connectDescriptionCode
newDescriptionCode
Methods description
connectcode    nextTop
  Example    : $dbc->connect
Description: Connects to the database using the connection attribute
information.
Returntype : none
Exceptions : thrown if it can't connect to database
Caller : $self->new, $self->db_handle
newcodeprevnextTop
  Arg [DBNAME] : string
The name of the database to connect to.
Arg [HOST] : (optional) string
The domain name of the database host to connect to.
'localhost' by default.
Arg [USER] : string
The name of the database user to connect with
Arg [PASS] : (optional) string
The password to be used to connect to the database
Arg [PORT] : int
The port to use when connecting to the database
Arg [DRIVER] : (optional) string
The type of database driver to use to connect to the DB
mysql by default.
Arg [DBCONN] : (optional)
Open another handle to the same database as another connection
If this argument is specified, no other arguments should be
specified.
Example : $dbc = Bio::EnsEMBL::ExternalData::SangerSNP::DBConnection->new
(-user => 'anonymous',
-dbname => 'snp',
-host => 'ocs4',
-driver => 'Oracle');
Description: Constructor for a DatabaseConenction. Any adaptors that require database connectivity should inherit from this class. Returntype : Bio::EnsEMBL::ExternalData::SangerSNP::DBConnection Exceptions : thrown if USER or DBNAME are not specified, or if the database cannot be connected to. Caller : Bio::EnsEMBL::::Utils::ConfigRegistry (for newer code using the registry), Bio::EnsEMBL::DBSQL::DBAdaptor (for old style code)
Methods code
connectdescriptionprevnextTop
sub connect {
    my $self = shift;
    return if($self->connected);
    $self->connected(1);

    if(defined($self->db_handle) and $self->db_handle->ping) {
        warning("unconnected db_handle is still pingable, reseting connected boolean\n");
    }

    my $dbh;
    my $dsn;

    if ($self->driver eq 'Oracle') {
      $dsn = "DBI:" . $self->driver . ":";
      eval {
          $dbh = DBI->connect($dsn,
                              $self->username . "\@" . $self->dbname,
                              $self->password,
                              { 'RaiseError' => 1, 'PrintError' => 0, 'AutoCommit' => 1 });
      };
    } else {
      $dsn = "DBI:" . $self->driver() .
            ":database=". $self->dbname() .
            ";host=" . $self->host() .
            ";port=" . $self->port();

     eval{ $dbh = DBI->connect($dsn, $self->username(), $self->password(), {'RaiseError' => 1}); };
   }


    if(!$dbh || $@ || !$dbh->ping) {
        warn("Could not connect to database " . $self->dbname .
                " as user " . $self->username .
                " using [$dsn] as a locator:\n" . $DBI::errstr);
        throw("Could not connect to database " . $self->dbname .
                " as user " . $self->username .
                " using [$dsn] as a locator:\n" . $DBI::errstr);
    }

    $self->db_handle($dbh);
}

1;
}
newdescriptionprevnextTop
sub new {
    my $class = shift;
    my ($db, $host, $driver, $user, $password, $port, $dbconn) =
        rearrange([qw(DBNAME HOST DRIVER USER PASS PORT DBCONN )], @_);

    my $self = {};
    bless $self, $class;

    if($dbconn) {
        if($db || $host || $driver || $password || $port) {
            throw("Cannot specify other arguments when -DBCONN argument used.");
        }
        $self->dbname($dbconn->dbname);
        $self->username($dbconn->username);
        $self->host($dbconn->host);
        $self->password($dbconn->password);
        $self->port($dbconn->port);
        $self->driver($dbconn->driver);
    } else {
        $db   || throw("-DBNAME argument is required.");
        $user || throw("-USER argument is required.");

        $driver ||= 'Oracle';

        $self->username($user);
        $self->host($host);
        $self->dbname($db);
        $self->password($password);
        $self->driver($driver);
    }
    return $self;
}
General documentation
LICENCETop
This code is distributed under an Apache style licence:
Please see /code_licence.html for details
AUTHORTop
Steve Searle <searle@sanger.ac.uk>
CONTACTTop
Post questions to the EnsEMBL development list ensembl-dev@ebi.ac.uk