Igual que los manejadores de base de datos se crean desde el DBI, los manejadores de sentencia son hijos de un manejador de base de datos. Como su propio nombre implica, los manejadores de sentencia se utilizan para sentencias individuales tales como SELECT, INSERT, UPDATE, DELETE, etc., para ejecutarse en el servidor de base de datos. Se pueden definir múltiples manejadores de sentencia (y normalmente se hace) basándose en un manejador de base de datos dentro de un programa dado.
Los manejadores de sentencia se crean por sentencias. Esto significa que si tiene múltiples sentencias a ejecutar contra un manejador de base de datos dado, necesitará múltiples manejadores de sentencia. Sin embargo, puede reutilizar un manejador de sentencia si la sentencia se tiene que volver a ejecutar contra una base de datos. De hecho, puede utilizar parámetros para ejecutar la misma sentencia pero con diferentes valores, como se explica más adelante en este capítulo.
Los manejadores de sentencia no son siempre necesarios para enviar sentencias a la base de datos. Los manejadores de sentencia son necesarios cuando necesita recuperar o ir a buscar información de la base de datos. Sin embargo, las sentencias también se pueden ejecutar directamente contra la base de datos por medio del método do() del manejador de base de datos, según se explica más adelante en este capítulo.
Como se ha indicado anteriormente, se crea un manejador de sentencia desde el manejador de base de datos. En términos prácticos, esto significa que crea una variable, comúnmente denominada $sth para albergar el objeto de manejador de sentencia. El método prepare() de la variable del manejador de sentencia se invoca en el manejador de base de datos. Aquí tiene un ejemplo:
my $sth = $dbh->prepare("SELECT user, host FROM mysql.user");
Por sí mismo, el manejador de sentencia creado en el ejemplo de código puede no hacer nada. Para algunos tipos de base de datos, incluido MySQL la interacción con la base de datos todavía no ha tendio lugar. En su lugar, el DBI solamente ha preparado la sentencia para ejecutarse más adelante.
Esta llamada del método prepare() se utiliza para activar la parametrización de la sentencia antes de ejecutar la sentencia más adelante. La sentencia no se ejecutará contra la base de datos hasta que se invoque el método execute() en el manejador de sentencia, $sth:
$sth->execute();
En este punto, la sentencia, en este caso, una sentencia SELECT, se ha ejecutado contra la base de datos aunque no se ha recuperado níngún resultado.
Nota: Algunas bases de datos analizarán la sentencia cuando invoque prepare() y de esta manera puede devolver errores si el servidor encuentra problemas mientras trata de analizar la sentencia SQL dada en el método prepare(). Consulte la documentación para el driver de base de datos para determinar si las sentencias se analizan en el momento de invocar prepare().
lunes, 21 de febrero de 2011
MANEJADORES DE BASE DE DATOS
Como se ha indicado anteriormente, el proceso de conectar con una base de datos está generalizado entre las bases de datos, aunque existen ciertas consideraciones para tipos específicos de base de datos. Conectar con una base de datos crea un objeto de manejador de base de datos que se utiliza como un punto para crear manejadores de sentencias e interactuar con el servidor de base de datos.
Los manejadores de base de datos representan una conexión con la base de datos, y puede tener múltiples conexiones con múltiples (o la misma) bases de datos al definir múltiples manejadores de base de datos. Los manejadores de base de datos se escriben normalmente en código como $dbh.
La creación de un manejador de base de datos por medio del DBI requiere un DSN. La mayoría de las bases de datos en la actualidad son multiusuario, lo que significa que credenciales como un nombre de usuario y contraseña son también obligatorias para conectar con la base de datos y crear un manejador de base de datos. Es una buena práctica conectar con la base de datos tan pocas veces como sea posible (normalmente una) dentro de un programa, en lugar de conectarse y desconectarse para cada sentencia o consulta.
El método DBI connect() conecta con la base de datos y devuelve el manejador de base de datos:
Nota: Aunque frecuentemente verá los manejadores de base de datos escritos como $dbh, no hay ninguna razón para que no se puedan llamar con cualquier otro nombre válido de variable. El $dbh es una convención antingua y la utilizaré en este libro para hacer referencia a un manejador de base de datos.
Los manejadores de base de datos representan una conexión con la base de datos, y puede tener múltiples conexiones con múltiples (o la misma) bases de datos al definir múltiples manejadores de base de datos. Los manejadores de base de datos se escriben normalmente en código como $dbh.
La creación de un manejador de base de datos por medio del DBI requiere un DSN. La mayoría de las bases de datos en la actualidad son multiusuario, lo que significa que credenciales como un nombre de usuario y contraseña son también obligatorias para conectar con la base de datos y crear un manejador de base de datos. Es una buena práctica conectar con la base de datos tan pocas veces como sea posible (normalmente una) dentro de un programa, en lugar de conectarse y desconectarse para cada sentencia o consulta.
El método DBI connect() conecta con la base de datos y devuelve el manejador de base de datos:
Nota: Aunque frecuentemente verá los manejadores de base de datos escritos como $dbh, no hay ninguna razón para que no se puedan llamar con cualquier otro nombre válido de variable. El $dbh es una convención antingua y la utilizaré en este libro para hacer referencia a un manejador de base de datos.
INTERACTUAR CON UN BASE DE DATOS. DRIVERS DE BASE DE DATOS (DBD).
Un driver de base de datos proporciona los métodos de interacción de base de datos que son específicos a la implementación individual de base de datos. Se conoce comúnmente como el DBD, por dependiente de base de datos, ya que su código depende de la base de datos que se utilice.
Por ejemplo, una base de datos MySQL tiene sintaxis diferente que una base de datos Oracle. El DBI opera independientemente de la base de datos, dejando el código específico de la implementación al DBD.
Algunos de los DBD más populares son los siguientes.
Por ejemplo, una base de datos MySQL tiene sintaxis diferente que una base de datos Oracle. El DBI opera independientemente de la base de datos, dejando el código específico de la implementación al DBD.
Algunos de los DBD más populares son los siguientes.
- MySQL: Es una parte de la plataforma de desarrollo LAMP (Linux-Apache-MySQL-Perl) que es tan popular en todo el mundo.
- PostgreSQL: Otra base de datos popular de código abierto es PostgreSQL. El DBD para PostgreSQL es similar al de MySQL.
- ODBC: El DBD de ODBC se utiliza comúnmente para conectar con bases de datos que se ejecutan en sistemas Windows, como Microsoft SQL Server y Microsoft Access, pero el driver ODBC se puede utilizar para conectar con casi cualquier base de datos que ofrezca conectividad ODBC.
- Sybase: Otro popular DBD se utiliza con el servidor de base de datos Sybase. Este servidor y el DBD para él no se tratarán en este libro.
BASES DE DATOS Y LENGUAJES DE PROGRAMACIÓN
Las bases de datos son vitales para innumerables aplicaciones y desempeñan un papel importante en llevar aplicaciones a la Web. Este blog examina los elementos implicados en conectar con bases de datos relacionales utilizando distintos lenguajes.
Suscribirse a:
Comentarios (Atom)