3. ¿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)
4. Conceptos
• DBD -> DataBase Driver
Cada driver se encarga de “hablar” con la DB
• DSN -> Data Source Name
Cadena de conexión
• DBH -> Database handler
Representa una conexión a una base de datos
• STH -> Statement handler
Respresenta una sentencia SQL
5. Conectar a una base de datos
use DBI;
my $dbh = DBI-
>connect(“dbi:DRIVER:PARAM1=VALOR1;PARAM2=VAL
OR2”, $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
6. 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‟);
7. Ahora que tengo una conexión
my $sth = $dbh->prepare(„INSERT INTO tabla
(nombre, apellidos) VALUES (?, ?)‟);
while (…) {
$sth->execute($name, $lastname);
}
$sth->finish;
8. ¿Qué son los interrogantes?
Bind Params
• http://xkcd.com/327/
9. Recuperando Datos
my $sth = $dbh->prepare(„SELECT * FROM tabla
WHERE nombre = ?‟);
$sth->execute(„Larry‟);
FETCH
$sth->finish;
11. 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;