DBI, interfaccia verso i database per il linguaggio Perl (II p.)

Connessione ed interrogazione di un database

Le informazioni necessarie per connettersi ad un database sono:

data source name: stringa contenente informazioni relative al driver da utilizzare per la connessione e al database cui ci si vuole connettere.

Esempio: “dbi:Oracle:prova”

login e password : nome dell’utente e relativa password (ad esempio “scott”, “tiger”).

Per la connessione si utilizza il metodo connect, al quale sono passati i precedenti valori:

$dbh = DBI->connect(”dbi:Oracle:prova”, “scott”, “tiger”);

che restituisce un handle al database (trattato nel precedente intervento).

Consideriamo un esempio un po’ piu’ complesso:

# caricamento del driver DBI

use DBI;

$dbh = DBI->connect(”dbi:Oracle:prova”, “scott”, “tiger”);

if ( !defined $dbh ) {

die “Connessione al database non riuscita: $DBI::errstrn”;

}

# Disconnessione dal database

$dbh->disconnect;

In questo esempio viene gestita la mancata connessione, in questo caso il metodo restituisce il valore undef, e oltre ad un messaggio standard viene stampato il valore della variabile $DBI::errstr che contiene l’errore che ha causato la mancata connessione.

Al termine delle operazioni non e’ strettamente necessario disconnettersi (ci penserebbe il garbage collector a liberare le risorse) ma e’ comunque un modo piu’ pulito di programmare.

Una volta connessi e’ possibile eseguire le istruzioni sql, per fare cio’ si utilizzano i metodi prepare() che restituisce un handle di tipo statement ed il metodo execute() che esegue l’istruzione sql:

# preparazione dell’istruzione

$sth = $dbh->prepare( “SELECT nome,cognome FROM tabella” );

# esecuzione dell’istruzione

$sth->execute;

Una volta eseguita l’istruzione e’ possibile elaborare i record estratti, tramite il metodo fetchrow(), ad esempio stampandoli a video:

while ( ( $nome, $cognome ) = $sth->fetchrow() ) {

print “NOME: $nometCOGNOME: $cognomen”;

}

# rilascio della risorsa

$sth->finish;

Per quanto riguarda istruzioni che non estraggo i dati, come ad esempio una update, si utilizza il metodo do(), che esegue immediatamente l’istruzione:

$rv = $dbh->do( ” UPDATE tabella SET nome= …. ” );

if ( !defined $rv ) {

die “Istruzione update fallita: $DBI::errstrn”;

}

Per ora e’ tutto, se siete particolarmente interessati all’argomento vi consiglio il libro:

Programming the Perl DBI

Iolowcost

Una vita a basso costo?

Visita subito il nostro portale!

Le categorie della guida

Link correlati