|
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).
<?
$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)
<?
$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)
<?
$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)
<?
$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.
|