Creación de una aplicación de acceso a Base de Datos mediante

Anuncio
Bases de Datos II
Práctica 5, curso 2001-2002
Creación de una aplicación de acceso a Base de Datos
mediante ODBC
Introducción
En esta práctica nos proponemos realizar una aplicación que permita la conexión con
una Base de Datos mediante ODBC (open database conectivity) estándar.
El principal objetivo es el aprendizaje de lo que es un ODBC y cómo su utilización
facilita la programación con BD.
ODBC proporciona medios de comunicación con el SGBD utilizando una aplicación
estándar que programa la interfaz y sintaxis SQL. Una aplicación que utiliza ODBC
puede conectarse a cualquier SGBD si existe un controlador ODBC para ese sistema.
Esto significa que el uso de un determinado SGBD (Oracle, Access….) es transparente
para el programador.
Configurar ODBC
ODBC proporciona una utilidad llamada ODBC Data Source Administrador que se
utiliza para configurar ODBC. Este programa, al que se puede acceder vía el Control
Panel, prepara la configuración de los controladores.
Utilización de clases MFC de Bases de Datos
Visual C++ proporciona algunas clases orientadas a la programación de Bases de Datos.
En esta sección veremos la utilización de 2 de ellas: CDatabase y CRecordSet.
Clase CDatabase
La clase CDatabase representa una conexión a un origen de datos. Un objeto CDatabase
se suele utilizar cuando nuestra aplicación necesita emitir una instrucción SQL que no
devuelve ningún dato. La función CDatabase::ExecuteSQL() existe sólo para este
propósito.
Ejemplo de utilización de este objeto:
try{
CDatabase db;
if (db.Open( “origendatos”) )
{
db.ExeciteSQL(“insert into mitabla VALUES (“NADA”,1,0)”);
db.Close();
}
}
catch(CDBException* pe)
{
AfxMessageBox(pe->m_strError);
pe->Delete();
}
1
Bases de Datos II
Práctica 5, curso 2001-2002
Todas las funciones miembro de la clase CDatabase lanzan una excepción de tipo
CDBException si ocurre una condición anormal. Las 3 variables clave de esta clase que
nos permitirán identificar el error son las siguientes:
• m_strError- Cadena que describe el error que causó la exceptción que va
a ser lanzada.
• m_strStateNativeOrigin –Cadena que describe el error que causó la
excepción que va a ser lanzada en términos de códigos de error de la
ODBC.
Otro conjunto de funciones útiles de la clase CDatabase son las funciones compatibles
con las transacciones:
CDatabase::BeginTrans()
CDatabase::CommitTrans()
CDatabase::Rollback()
CDatabase::CanTransact()
Clase CRecordSet
Mientras que el objeto CDatabase representa una conexión a un origen de datos, un
objeto CRecordSet (conjunto de registros) representa un conjunto de registros
recuperados desde le origen de datos.
La manera más sencilla de utilizar este objeto es configurándolo desde el asistente de
clases del visual. En este asistente lo que se hace es relacionar el conjunto de registros
con los datos de una tabla determinada existente en el origen de datos. Una vez que
hemos creado la clase derivada mediante el asistente de clases, podemos utilizarla para
realizar cualquiera de las siguientes tareas:
•
•
•
•
•
•
•
construir un conjunto de registros.
Abrir un conjunto de registros.
Filtrar los datos
Ordenar los registros devueltos mediante una instrucción SQL.
Navegar a través de un grupo de resultados.
Salvar registros
Eliminar registros.
A continuación se muestran algunas funciones miembro de interés para trabajar con
registros:
Open()
Close()
MoveNext()
MovePrev()
MoveFirst()
MoveLast()
AddNew()
Update()
Delete()
2
Bases de Datos II
Práctica 5, curso 2001-2002
Aquí se muestra un ejemplo de utilización de la clase CRecordSet. Suponemos que se
ha creado una clase derivada llamada, ‘CRegistroSocios’ y que se declara una variable
de este tipo dentro de la clase dónde se utilizará. Además se crea otra variable tipo
CDatabase como miembro de la misma clase:
try{
//Abro la BD prestamos.mdb
if ( db.Open("prestamos") )
{
ActualRegistroSocio =new CRegistrsSocios();
//Abro el conjunto de registros
ActualRegistroSocio->Open();
//Escribo en los cuadros de dialogo del
//formulario los valores leidos de la BD
>m_idsocio);
m_idsocio.Format("%d",ActualRegistroSociom_nombre= ActualRegistroSocio->m_nombre;
m_ciudad=ActualRegistroSocio->m_ciudad;
m_tiposocio=ActualRegistroSocio->m_tiposocio;
//Para que se actualice la pantalla
UpdateData(FALSE);
}
}
catch(CDBException *pe)
{
AfxMessageBox(pe->m_strError);
pe->Delete();
}
Gestión de socios y libros de una biblioteca
Vamos a desarrollar una aplicación que utilice las clases antes mencionadas para
gestionar los prestamos de una biblioteca.
Para estar en condiciones de realizar esta práctica, en primer lugar, debemos crear una
BD Acces (BD con tres tablas tal como se mostraba en la primera práctica). Es
importante destacar que la programación es equivalente si tratara de cualquier otra BD.
Nota: La BD prestamos.mdb os la facilitará la profesora. Es equivalente a la que
utilizábamos en el resto de las prácticas.
La aplicación debe permitir mostrar los socios actuales de la biblioteca, insertar nuevos
socios y borrar socios. También debe permitir borrar e insertar nuevos libros.
Se trata, pues de realizar un formulario para la tabla libros y socios. Además debe
permitir visualizar los libros que tiene un determinado usuario.
A continuación se muestra un ejemplo de cómo debe quedar la aplicación:
3
Bases de Datos II
Práctica 5, curso 2001-2002
Este es el dialogo principal, en el que aparecen 3 botones que lanzan los diálogos que
gestionan los socios, los libros y los prestamos.
El diálogo de socios podría tener el siguiente aspecto:
Ese diálogo que representa un formulario permite movernos por el conjunto de registros
que componen la tabla socios, insertar un nuevo registro, borrar uno ya existente y
realizar búsquedas sobre un campo especificado.
4
Bases de Datos II
Práctica 5, curso 2001-2002
Puesto que realizar todo esto aunque sencillo es bastante laborioso, el profesor os
facilitará algunos cuadros de diálogo ejemplos ya diseñados.
Puesto que el diálogo de los libros es exactamente igual que el de los socios, bastará con
entregar al profesor la aplicación que tenga un formulario para los socios completo (tal
como aparece en la imagen anterior) y otro formulario para préstamos.
5
Descargar