Pecesama.Net [developing the future]
CICESE, Volcán de Colima, Iglesia de Cihuatlán, Ensenada y Manzanillo
 

 

Temas:

  Inicio PHP
  Introducción
  Lenguaje PHP
  Tipos de datos
  Control
  Arreglos
  Formularios
  Archivos
  Bases de datos
  PHP y MySQL
  PHP y ODBC
  Envió de email
  Attachments
  Sesiones
  Servicios Web

Donar:

Extras:

  Licencia

 

Conceptos básicos sobre ODBC

    ¿Qué es ODBC?

Open DataBase Conectivity (ODBC) es un desarrollo de Microsoft que se ha convertido en estándar, para el acceso a través de él a gran cantidad de tipos de datos. Básicamente, por tanto, cualquier aplicación simple que emplee ODBC puede acceder a las Bases de datos soportadas por este estándar. El funcionamiento es: la aplicación sólo necesita comunicarse con un paquete de archivos (ODBC), e instantáneamente puede trabajar con cualquier tipo de datos soportados por este paquete.

·        Hay dos posibles accesos a la Base de datos (DIRECTO e INDIRECTO) el que denomino DIRECTO consiste en que normalmente, una compañía diseña una aplicación que accederá a datos. Esta aplicación se desarrolla hacia un tipo de datos, y por tanto sólo se implementa el acceso para ese tipo de datos. Si se requiere acceso a otro DBMS, es necesario por tanto, implementar un nuevo controlador o driver de acceso. Este sistema hace que el acceso sea directo a la Base de datos, pero tiene el inconveniente de que hay que desarrollar el enlace para cada DBMS que se quiera soportar.

·        Otro posible acceso es el INDIRECTO, es decir, si el DBMS posibilita que con ODBC puedan ser accedidos los datos, es decir funciona con lo que se denomina ODBC data source, (o fuente de datos ODBC) la aplicación accede a través del paquete de archivos ODBC "indirectamente", y si añadimos que ODBC es soportado por los DBMS más comunes, con una misma aplicación y con un mismo paquete de drivers, podremos acceder a todas las DBMS sin necesidad de hacer un desarrollo para cada tipo.

Ventajas del uso del acceso "indirecto" a través del ODBC:

Quizás, la mayor ventaja es que el acceso a datos a través del ODBC permite el poder gestionar un amplio rango de datos con una sola interface. Desde que los más populares DBMS ofrecen drivers ODBC, muchas son las aplicaciones que lo incluyen como drivers de acceso.

Otra ventaja es que al poderse variar la fuente de datos, el cambio de una DBMS a otra es simplista. Por ejemplo, si se diseña un informe usando Oracle Data source, y más tarde, la empresa decide cambiar a Microsoft SQL Server, simplemente con cambiar el ODBC data source usado por el informe, se accede a la nueva DBMS. El único requerimiento es que la nueva fuente de datos ha de tener la misma estructura de tablas y campos que la fuente de datos original.

Además, el SQL que se envía al ODBC puede ser revisado y corregido antes de su envío, y por tanto se controla exactamente los datos que se quieren recuperar de la fuente.

     Desventajas del ODBC:

La principal desventaja son las capas a través de las cuales tiene que pasar la consulta, esto hace que el tiempo de respuesta hasta que se obtienen los datos se incremente. El proceso es que la petición ha de "traducirse" a ODBC, para que éste entienda la consulta. ODBC determina que fuente de datos contiene los datos que se piden y transmite la petición a la siguiente capa que es la fuente de datos ODBC (ODBC data source). La fuente de datos analiza la petición y "traduce" de nuevo la consulta a un formato que pueda ser "comprendido" por la DBMS. Este complejo proceso puede verse alterado por cualquier fallo en cualquiera de sus fases  y por tanto la consulta no tendría éxito.

Cabe añadir que, las fuentes de datos ODBC deben estar configuradas correctamente en el ODBC.INI y en el ODBCINST.INI antes de poder ser usada. Si intentas crear un informe en un sistema y tratas de abrirlo con otro sistema, probablemente no empleen el mismo ODBC data source, y por tanto no se establecerá la conexión. Además hay que asegurarse que el SQL usado en el ODBC ha de estar basado en los estándares establecidos por el American National Standards Institute (ANSI) para el lenguaje SQL.

      Ahora vamos a verlo gráficamente. Soy usuario de una aplicación de PHP que usa bases de datos externas para almacenar información, esta aplicación trabaja directamente con MySQL, pero mi intención es tener una conexión con una base de datos de Microsoft Access, porque es más fácil; PHP no trabaja directamente con Access, pero puede entenderse con él usando ODBC de por medio. Necesito crear un origen de datos en ODBC para que PHP sepa a qué base de datos me refiero cuando le solicite información.

       Primero vamos a buscar a ODBC, que está en el Panel de Control.

      Bueno, y ahora, el Data Source Administrator del Open DataBase Conectivity, u ODBC. Lo que sigue es crear una fuente u origen de datos, pero antes unas explicaciones:

     Vas a notar que las primeras tres pestañas se refieren a User DSN, System DSN y File DSN. Perdón, pero tengo la versión en inglés, voy a traducir un poco:

     User DSN, nombre del origen de datos para el usuario. A veces, una máquina es utilizada por más de un usuario, los orígenes de datos declarados aquí son exclusivos del usuario.

     System DSN, nombre del origen de datos para el sistema. Todos los usuarios de la máquina tienen acceso a estos orígenes de datos.

     User DSN, nombre del origen de datos en archivo. Se crea un archivo con la extensión DSN, que sirve como origen de datos y puede ser distribuido a otros usuarios. Este origen es el que usa Excel por omisión cuando hace consultas, cuidado con eso.

     Está otra pestaña importante que es ODBC Drivers u Controladores ODBC. Aquí se ven todos los controladores disponibles en la máquina. De está forma puedes consultar si dispones del controlador que necesitas y si es la versión conveniente. Regularmente los controladores de bases de datos vienen con un programa SETUP que los instala y quedan dados de alta en esta lista.

     Las otras pestañas merecen artículos aparte pues sirven más a los administradores y desarrolladores de sistemas. Para el fin de crear un origen de datos, con lo que hemos visto tenemos. Lo siguiente:

     Vamos a seleccionar la pestaña System DSN, nombre de origen de datos del sistema y presionamos el botón Add&, agregar..

     Luego señalamos el controlador o driver del tipo de base de datos que queremos accesar: Microsoft Access Driver (o controlador, en la versión en español) y presionamos Finalizar; pero fíjate que todavía no acabamos.

      Lo que tenemos que hacer ahora es darle al nuevo origen de datos un nombre peculiar y distintivo, como estamos creando un origen de datos para una base de datos que se llama MyTown.mdb pues le llamo MiPueblo y le damos una descripción (que en realidad no es necesaria).

     Eso es todo, ahora solamente se debe cerrar el administrador de ODBC presionado el botón Aceptar. Tenemos un origen de datos nuevo que le será útil a aplicaciones que de otra forma no podrían leer una base de datos Access El controlador de ODBC de Microsoft Access se puede instalar, si es que no lo tienes, desde el CD de Office o de Access sí lo tienes como versión independiente.

Para más información y recursos respecto a ODBC puedes visitar:

            Ya conocemos que es ODBC y como crear un DSN, ahora veamos como usar esas bases con PHP:

PHP con ODBC

    Conectarse

            Veamos como realizar una conexión con ODBC a un DSN de nombre base y mostrar los resultados (conectarODBC.php).

conectarODBC.php

<?

$conexion = odbc_connect("base","","","");

$rs= odbc_exec($conexion,"select * from usuarios"); 

while (odbc_fetch_row($rs))

{          

echo odbc_result($rs,"Nombre");

echo odbc_result($rs,"idusuario");

}

odbc_close_all();

?>

    Agregar

Vamos a agregar un registro a la base de datos (agregarODBC.php)

agregarODBC.php

<?

$conexion = odbc_connect("base","","","");

$rs= odbc_exec($conexion,"select * from usuarios");

$sql="insert into usuarios (idusuario, Nombre) values('1','Pedro')";

$rs=odbc_exec($conexion,$sql);

odbc_close_all();

?>

    Modificar

Vamos a modificar un registro a la base de datos (modificarODBC.php)

modificarODBC.php

<?

$conexion = odbc_connect("base","","","");

$rs= odbc_exec($conexion,"select * from usuarios");

$sql=" update usuarios set Nombre='pecesama'";

$rs=odbc_exec($conexion,$sql);

odbc_close_all();

?>

    Eliminar

Vamos a eliminar un registro a la base de datos (eliminarODBC.php)

eliminarODBC.php

<?

$conexion = odbc_connect("base","","","");

$rs= odbc_exec($conexion,"select * from usuarios");

$sql=" delete from usuarios where idusuario='1'";

$rs=odbc_exec($conexion,$sql);

odbc_close_all();

?>

            Como puedes ver no me extendi mucho en el tema, pero ya conoces mucho de PHP, tu puede crear ya las aplicaciones y con esto que puse para conecatarse y manejo de registros es suficiente para que ya desarrolles tu, pero por si te falta mas información te pongo la sintaxis de las funciones que tiene PHP para ODBC:

  • (int) odbc_autocommit($connection_id, $OnOff)
  • (void) odbc_close($connection_id)
  • (void) odbc_close_all(void)
  • (int) odbc_commit($connection_id)
  • (int) odbc_connect($dsn, $user, $password)
  • (int) odbc_pconnect($dsn, $user, $password)
  • (string) odbc_cursor($result_id)
  • (int) odbc_do($connection_id, $query_string)
  • (int) odbc_exec($connection_id, $query_string)
  • (int) odbc_prepare($connection_id, $query_string)
  • (int) odbc_execute($result_id, $array)
  • (int) odbc_fetch_row($result_id, $row_number)
  • (int) odbc_fetch_into($result_id, $row_number, $array_ptr)
  • (int) odbc_field_len($result_id, $field_number)
  • (string) odbc_field_name($result_id, $field_number)
  • (string) odbc_field_type($result_id, $field)
  • (int) odbc_free_result($result_id)
  • (int) odbc_num_fields($result_id)
  • (int) odbc_num_rows($result_id)
  • (string) odbc_result($result_id, $field)
  • (int) odbc_result_all($result_id, $format)
  • (int) odbc_rollback($connection_id)

Ahora que ya manejamos archivos y bases de datos, vamos a ver un poco más de PHP, algo más avanzado, como las sesiones e incluso algunas funciones con protocolos de Internet.

 

(cc) 2002-2006 Pedro Santana. Some Rights Reserved.
Visitante 1182572 a partir del 17/Oct/2002

Sitio orgullosamente mexicano