next up previous contents index
Next: Ejemplo de DBI/DBD Up: Perl Previous: Objetos grandes   Índice General   Índice de Materias

DBI/DBD

DBI son las siglas en inglés de Database independent interface for Perl. El concepto de funcionamiento es que mientras DBI es una interfase independiente del soporte de un manejador de base de datos en particular, los DBD Database Drivers le dan la funcionalidad para cada manejador o subsistema --dado que incluye soporte para archivos planos y hashes en memoria o en disco--.

Enumeramos a continuación los métodos empleados por este sistema:

$dbh = DBI->connect("dbi:Pg:dbname=$dbname
;host= $host;port= $port;options= $options; tty= $tty", " $username", "$password"); Se conecta a la base indicada por $dbname en la computadora $host, por el puerto $port, con las opciones $options, con las características de terminal $tty, como el usuario $username con contraseña $password. Todos los parámetros señalados son opcionales y reemplazados como se indican en la tabla 14.1.

Cabe recordar que si se indica el nombre de una computadora, el servidor en esa máquina debe de previamente haber sido inicializado con la opción -i.

Entre las opciones posibles, está la de indicarle al servidor cuántos buffers (de ocho kilobytes cada uno) se desean en la copia del servidor que nos estará atendiendo. Se corresponde con la opción -B descrita en la página 15.1.

@driver_names = DBI->available_drivers;
Regresa una lista con los controladores que la instalación de DBI conoce.

@data_sources = DBI->data_sources('Pg');
Es una manera de preguntar por cuáles bases de datos están disponibles en el manejador. Se necesita acceso a la tabla template1 sin necesidad de autentificarse como usuario.

DBI->trace($trace_level, $trace_file)
Recolecta información al momento de ejecución en el archivo descrito por $trace_file, con el nivel de granularidad $trace_level.

$rv = $h->err;
Regresa el resultado de invocar el método status, en caso de invocar una conexión, o resultStatus en los demás casos.

$str = $h->errstr;
Regresa el resultado de invocar al método errorMessage.

$h->trace_msg($message_text);
Envía el mensaje $message_text utilizando el método trace.

$sth = $dbh->prepare($statement, 99#99%attr);
Prepara la consulta para ser enviada al servidor. Éste método es genérico en DBI/DBD y en realidad PostgreSQL no necesita preparar las consultas.

@row_ary = $dbh->selectrow_array($statement, 99#99%attr, @bind_values);
Luego de preparar la consulta se extrae la información con éste método dejando la información en el arreglo @row_ary.

$ary_ref = $dbh->selectall_arrayref($statement, 99#99%attr, @bind_values);
Recibe una tupla.

$rv = $dbh->do($statement, 99#99%attr, @bind_values);
Ejecuta la consulta dada.

$rc = $dbh->commit;
Realiza un commit.

$rc = $dbh->rollback;
Realiza un rollback.

$rc = $dbh->disconnect;
Desconecta del servidor y termina la sesión.

$rc = $dbh->ping;
Verifica que la conexión esté viva.

$sth = $dbh->table_info;
Regresa todas las tablas y vistas pertenecientes al usuario que realizó la conexión. No regresa indices, secuencias ni tablas del sistema.

@names = $dbh->tables;
Idéntico al anterior.

$sth = $dbh->DBD::Pg::db::attributes($table);
Regresa el oid, nombre, tipo y longitud de los atributos de la tabla especificada.

$type_info_all = $dbh->type_info_all;
Regresa los tipos de acuerdo al mapa especificado en la tabla 14.2 haciendo la conversión entre PostgreSQL y SQL92.


Tabla: Correspondencia de tipos de datos entre PostgreSQL y los definidos por el estándar SQL92
Nombre del tipo SQL92
bool BOOL
text el mismo
bpchar CHAR(n)
varchar VARCHAR(n)
int2 SMALLINT
int4 INT
int8 el mismo
money el mismo
float4 FLOAT(p) p100#1007101#101float4, p100#10016101#101float8
float8 REAL
abstime el mismo
reltime el mismo
tinterval el mismo
date el mismo
time el mismo
datetime el mismo
timespan TINTERVAL
timestamp TIMESTAMP


@type_info = $dbh->type_info($data_type);
Regresa la información del tipo especificado.

$sql = $dbh->quote($value, $data_type);
Convierte el valor a una cadena segura con todos los carácteres mapeados de tal manera que no haya carácteres inválidos.

AutoCommit (boolean)
Si se utiliza, todas las transacciones terminarán con un commit automáticamente.

pg_auto_escape (boolean)
Si se utiliza, todas las cadenas que contengan secuencias de escape serán automáticamente convertidas.

$rv = $sth->execute(@bind_values);
Ejecuta la consulta.

$rv = $sth->rows;
Regresa el número de tuplas afectadas por la última consulta.

$blob = $sth->blob_read($id, $offset, $len);
Lee un objeto grande. Si el offset y la longitud son cero, regresa el objeto grande completo.

pg_size (array-ref, read-only)
Regresa el tamaño en bytes de cada columna.

pg_type (hash-ref, read-only)
Regresa una referencia a un arreglo para cada columna.

pg_oid_status (integer, read-only)
Regresa el oid de la última consulta.

pg_cmd_status (integer, read-only)
Regresa el tipo de la última consulta (INSERT, DELETE, UPDATE, SELECT).



Subsecciones
next up previous contents index
Next: Ejemplo de DBI/DBD Up: Perl Previous: Objetos grandes   Índice General   Índice de Materias
Ismael Olea 2001-04-21