dbi

13

Click here to load reader

Upload: jose-luis-martinez

Post on 08-Jul-2015

439 views

Category:

Technology


0 download

DESCRIPTION

Tema: DBICurso de Perl avanzado Barcelona.pm 2012

TRANSCRIPT

Page 1: DBI

DBI

Page 2: DBI

¿Qué es?

• Database independent interface

– ODBC

– JDBC

Page 3: DBI

¿Qué es?

• Acceso común a bases de datos– mysql_connect($server, $username,

$password)

– pg_connect($connection_string,

$connect_type)

– db2_connect($database, $username,

$password)

DBI->connect($dsn, $user, $pass)

Page 4: DBI

Conceptos

• DBD -> DataBase DriverCada driver se encarga de “hablar” con la DB

• DSN -> Data Source NameCadena de conexión

• DBH -> Database handlerRepresenta una conexión a una base de datos

• STH -> Statement handlerRespresenta una sentencia SQL

Page 5: DBI

Conectar a una base de datos

use DBI;

my $dbh = DBI->connect(“dbi:DRIVER:PARAM1=VALOR1;PARAM2=VALOR2”, $user, $pass, $dbi_opts);

$dbh->disconnect;

DRIVER: mysql, SQLite, Pg…

PARAMX=VALORX: en la doc del driver ;)

Recomendación:

{ „RaiseError‟ => 1, „PrintError‟ => 0, „AutoCommit‟ => 0 } en $dbi_opts

Page 6: DBI

Ahora que tengo una conexión

my $sth = $dbh->prepare(„INSERT INTO tabla

(nombre, apellidos) VALUES (?, ?)‟);

$sth->execute(„Larry‟, „Wall‟);

$sth->finish;

$dbh->do(„INSERT…‟, undef, „Larry‟, „Wall‟);

Page 7: DBI

Ahora que tengo una conexión

my $sth = $dbh->prepare(„INSERT INTO tabla

(nombre, apellidos) VALUES (?, ?)‟);

while (…) {

$sth->execute($name, $lastname);

}

$sth->finish;

Page 8: DBI

¿Qué son los interrogantes?

Bind Params

• http://xkcd.com/327/

Page 9: DBI

Recuperando Datos

my $sth = $dbh->prepare(„SELECT * FROM tabla

WHERE nombre = ?‟);

$sth->execute(„Larry‟);

FETCH

$sth->finish;

Page 10: DBI

Fetching…

selectrow_array

selectrow_arrayref

selectrow_hashref

selectall_arrayref

selectall_hashref

Page 11: DBI

Recuperando Datos

my $sth = $dbh->prepare(„SELECT * FROM tabla WHERE

nombre = ?‟);

$sth->execute(„Larry‟);

while (my $row = $sth->fetchrow_hashref){

say “$row->{„nombre‟} $row->{„apellido‟}”;

}

$sth->finish;

Page 12: DBI

DBDs Interesantes

• DBD::mysql

• DBD::sqlite

• DBD::Pg

• DBD::Oracle

• DBD::CSV

• …

Page 13: DBI

DBD curiosos

• DBD::iPod

• DBD::Salesforce

• DBD::RDFStore

• DBD::Proxy

• …