Está en la página 1de 28

Taller de base de datos

Competencia.

Establecer conexiones entre el SGBD y algún lenguaje de programación, mediante


cadenas de conexión y/o protocolos de comunicación.

Conectividad de bases de datos.

M.I.D.S. Angel León Ramos


CONTENIDO
6.1 ODBC, ADO.NET, JDBC. ................................................................................ 3

6.2. Conectividad desde un lenguaje huésped o en dispositivos móviles. ................ 8


6.1 ODBC, ADO.NET, JDBC.

ODBC es una interfaz de nivel de llamada que permite que las aplicaciones tengan
acceso a los datos de cualquier base de datos en la que haya un controlador ODBC.
La utilización de ODBC permite crear aplicaciones de base de datos con acceso a
cualquier base de datos en la que el usuario final tenga un controlador ODBC. ODBC
proporciona una API que permite que la aplicación sea independiente del sistema de
administración de bases de datos (DBMS) de origen.

ODBC es la parte de base de datos de la Arquitectura de servicios abiertos de


Microsoft Windows (WOSA), una interfaz que permite que las aplicaciones de
escritorio basadas en Windows se conecten a varios entornos de computación sin
tener que volver a crear la aplicación para cada plataforma.

A continuación, se incluyen componentes de ODBC:


➢ API de ODBC.
Biblioteca de llamadas a funciones, conjunto de códigos de error y sintaxis de
lenguaje de consulta estructurado (SQL) estándar para tener acceso a los
datos de los DBMS.
➢ Administrador de controladores ODBC.
Biblioteca de vínculos dinámicos (Odbc32.dll) que carga controladores de
bases de datos ODBC en nombre de una aplicación. Esta DLL es transparente
a la aplicación.
➢ Controladores de bases de datos ODBC.
Biblioteca o bibliotecas DLL que procesan llamadas a funciones ODBC para
DBMS específicos.
➢ Administrador de ODBC.
Herramienta utilizada para configurar un DBMS de modo que quede disponible
como origen de datos de una aplicación.

Para que una aplicación sea independiente de los DBMS tiene que trabajar a través
de un controlador ODBC creado específicamente para un DBMS, en lugar de trabajar
directamente con el DBMS. El controlador convierte las llamadas en comandos que
el DBMS correspondiente puede utilizar, con lo que se simplifica el trabajo del
desarrollador, y hace que esté disponible para una amplia gama de orígenes de datos.

Las clases de base de datos admiten cualquier origen de datos para el que se tenga
un controlador ODBC. Entre ellos se puede incluir, por ejemplo, una base de datos
relacional, una base de datos de método de acceso secuencial indizado (ISAM), una
hoja de cálculo de Microsoft Excel o un archivo de texto. Los controladores ODBC
administran las conexiones al origen de datos y se utiliza SQL para seleccionar los
registros de la base de datos.

Lista de driver para aplicaciones java, según proveedor de datos.

IBM DB2
jdbc:db2://<HOST>:<PORT>/<DB>
COM.ibm.db2.jdbc.app.DB2Driver

JDBC-ODBC Bridge
jdbc:odbc:<DB>
sun.jdbc.odbc.JdbcOdbcDriver

Microsoft SQL Server


jdbc:weblogic:mssqlserver4:<DB>@<HOST>:<PORT>
weblogic.jdbc.mssqlserver4.Driver

Oracle Thin
jdbc:oracle:thin:@<HOST>:<PORT>:<SID>
oracle.jdbc.driver.OracleDriver

PointBase Embedded Server


jdbc:pointbase://embedded[:<PORT>]/<DB>
com.pointbase.jdbc.jdbcUniversalDriver

Cloudscape
jdbc:cloudscape:<DB>
COM.cloudscape.core.JDBCDriver

Cloudscape RMI
jdbc:rmi://<HOST>:<PORT>/jdbc:cloudscape:<DB>
RmiJdbc.RJDriver

Firebird (JCA/JDBC Driver)


jdbc:firebirdsql:[//<HOST>[:<PORT>]/]<DB>
org.firebirdsql.jdbc.FBDriver

IDS Server
jdbc:ids://<HOST>:<PORT>/conn?dsn='<ODBC_DSN_NAME>'
ids.sql.IDSDriver

Informix Dynamic Server


jdbc:informix-
sqli://<HOST>:<PORT>/<DB>:INFORMIXSERVER=<SERVER_NAME>
com.informix.jdbc.IfxDriver

InstantDB (v3.13 and earlier)


jdbc:idb:<DB>
jdbc.idbDriver

InstantDB (v3.14 and later)


jdbc:idb:<DB>
org.enhydra.instantdb.jdbc.idbDriver

Interbase (InterClient Driver)


jdbc:interbase://<HOST>/<DB>
interbase.interclient.Driver

Hypersonic SQL (v1.2 and earlier)


jdbc:HypersonicSQL:<DB>
hSql.hDriver

Hypersonic SQL (v1.3 and later)


jdbc:HypersonicSQL:<DB>
org.hsql.jdbcDriver

Microsoft SQL Server (JTurbo Driver)


jdbc:JTurbo://<HOST>:<PORT>/<DB>
com.ashna.jturbo.driver.Driver

Microsoft SQL Server (Sprinta Driver)


jdbc:inetdae:<HOST>:<PORT>?database=<DB>
com.inet.tds.TdsDriver

Microsoft SQL Server 2000 (Microsoft Driver)


jdbc:microsoft:sqlserver://<HOST>:<PORT>[;DatabaseName=<DB>]
com.microsoft.jdbc.sqlserver.SQLServerDriver

MySQL (MM.MySQL Driver)


jdbc:mysql://<HOST>:<PORT>/<DB>
org.gjt.mm.mysql.Driver

Oracle OCI 8i
jdbc:oracle:oci8:@<SID>
oracle.jdbc.driver.OracleDriver

Oracle OCI 9i
jdbc:oracle:oci:@<SID>
oracle.jdbc.driver.OracleDriver

PostgreSQL (v6.5 and earlier)


jdbc:postgresql://<HOST>:<PORT>/<DB>
postgresql.Driver

PostgreSQL (v7.0 and later)


jdbc:postgresql://<HOST>:<PORT>/<DB>
org.postgresql.Driver

Sybase (jConnect 4.2 and earlier)


jdbc:sybase:Tds:<HOST>:<PORT>
com.sybase.jdbc.SybDriver

Sybase (jConnect 5.2)


jdbc:sybase:Tds:<HOST>:<PORT>
com.sybase.jdbc2.jdbc.SybDriver

Para probar su controlador una vez que esté instalado, intente con el siguiente código:
Class.forName("Driver name");
Connection con = DriverManager.getConnenction("jdbcurl","username","password");
6.2. Conectividad desde un lenguaje huésped o en dispositivos móviles.

Lenguajes De Base De Datos:


Un sistema de bases de datos proporciona un lenguaje de definición de datos para
especificar el esquema de la base de datos y un lenguaje de manipulación de datos
para expresar las consultas a la base de datos y las modificaciones. En la práctica,
los lenguajes de definición y manipulación de datos no son dos lenguajes separados;
en su lugar simplemente forman partes de un único lenguaje de bases de datos, tal
como SQL, ampliamente usado.

Un esquema de base de datos se especifica mediante un conjunto de definiciones


expresadas mediante un lenguaje especial llamado lenguaje definición de datos
(LDD). Por ejemplo, la siguiente instrucción en el lenguaje SQL define la tabla cuenta:
create table cuenta (número-cuenta char(10), saldo integer) La ejecución de la
instrucción LDD anterior crea la tabla cuenta. Además, actualiza un conjunto especial
de tablas denominado diccionario de datos o directorio de datos. Un diccionario de
datos contiene metadatos, es decir, datos acerca de los datos. El esquema de una
tabla es un ejemplo de metadatos. Un sistema de base de datos consulta el
diccionario de datos antes de leer o modificar los datos reales. Especificamos el
almacenamiento y los métodos de acceso usados por el sistema de bases de datos
por un conjunto de instrucciones en un tipo especial de LDD denominado lenguaje de
almacenamiento y definición de datos. Estas instrucciones definen los detalles de
implementación de los esquemas de base de datos, que se ocultan usualmente a los
usuarios.

Los valores de datos almacenados en la base de datos deben satisfacer ciertas


restricciones de consistencia. Por ejemplo, supóngase que el saldo de una cuenta no
debe caer por debajo de $100. El LDD proporciona facilidades para especificar tales
restricciones. Los sistemas de bases de datos comprueban estas restricciones cada
vez que se actualiza la base de datos.
Lenguaje De Manipulación De Datos:
La manipulación de datos es:
• La recuperación de información almacenada en la base de datos.
• La inserción de información nueva en la base de datos.
• El borrado de información de la base de datos.
•La modificación de información almacenada en la base de datos.

Un lenguaje de manipulación de datos (LMD) es un lenguaje que permite a los


usuarios acceder o manipular los datos organizados mediante el modelo de datos
apropiado. Hay dos tipos básicamente:
• LMDs procedimentales. Requieren que el usuario especifique qué datos se
necesitan y cómo obtener esos datos.
•LMDs declarativos (también conocidos como LMDs no procedimentales). Requieren
que el usuario especifique qué datos se necesitan sin especificar cómo obtener esos
datos.
Los LMDs declarativos son más fáciles de aprender y usar que los LMDs
procedimentales. Sin embargo, como el usuario no especifica cómo conseguir los
datos, el sistema de bases de datos tiene que determinar un medio eficiente de
acceder a los datos. El componente LMD del lenguaje SQL es no procedimental.
Una consulta es una instrucción de solicitud para recuperar información. La parte de
un LMD que implica recuperación de información se llama lenguaje de consultas.
Aunque técnicamente sea incorrecto, en la práctica se usan los términos lenguaje de
consultas y lenguaje de manipulación de datos como sinónimos. Esta consulta en el
lenguaje SQL encuentra el nombre del cliente cuyo identificador de cliente es 19283:
select rfc, nombre from cliente where id = ‘19283’

La consulta especifica que las filas de (from) la tabla cliente donde (where) el id-cliente
es 19 283 746 se debe recuperar, y que se debe mostrar el atributo nombre de estas
filas. Las consultas pueden involucrar información de más de una tabla. Por ejemplo,
la siguiente consulta encuentra el saldo de todas las cuentas pertenecientes al cliente
cuyo identificador de cliente es 19 283.
select cuenta. saldo from cuenta, cliente
En el nivel físico se deben definir algoritmos que permitan un acceso eficiente a los
datos. En los niveles superiores de abstracción se enfatiza la facilidad de uso. El
objetivo es proporcionar una interacción humana eficiente con el sistema. El
componente procesador de consultas del sistema de bases de datos, traduce las
consultas LMD en secuencias de acciones en el nivel físico del sistema de bases de
datos.

Acceso a la base de datos


Desde programas de aplicación Los programas de aplicación son programas que se
usan para interaccionar con la base de datos. Los programas de aplicación se
escriben usualmente en un lenguaje anfitrión, tal como Cobol, C, C++ o Java. En el
sistema bancario algunos ejemplos son programas que emiten los cheques de las
nóminas, las cuentas de débito, las cuentas de crédito o las transferencias de fondos
entre cuentas.
Para acceder a la base de datos, las instrucciones LMD necesitan ser ejecutadas
desde el lenguaje anfitrión. Hay dos maneras de hacerlo:

1. • Proporcionando una interfaz de programas de aplicación (conjunto de


procedimientos) que se pueden usar para enviar instrucciones LMD y LDD a la base
de datos, y recuperar los resultados. El estándar de conectividad abierta de bases de
datos (ODBC, Open Data Base Connectivity) definido por Microsoft para el uso con el
lenguaje C es un estándar de interfaz de programas de aplicación usado comúnmente.
La conectividad estándar de Java con bases de datos (JDBC, Java Data Base
Connectivity) proporciona características correspondientes para el lenguaje Java.

2. Extendiendo la sintaxis del lenguaje anfitrión para incorporar llamadas LMD


dentro del programa del lenguaje anfitrión. Usualmente, un carácter especial precede
a las llamadas LMD, y un preprocesador, denominado el precompilador LMD,
convierte las instrucciones LMD en llamadas normales a procedimientos en el
lenguaje anfitrión.
Lenguajes De Un DMBS (DDL, DML):
Todo SGBD se componen, inicialmente, de 4 unidades diferenciadas:
1.-DDL: Lenguaje de definición de datos (Data Definition Language). Sencillo lenguaje
para definir y describir los objetos de la base de datos, su estructura, relaciones y
restricciones. En la práctica puede consistir en un subconjunto de instrucciones
de otro lenguaje informático. Además, suele poseer dos subconjuntos de
instrucciones:

➢ DSDL: Lenguaje de definición del almacenamiento de los datos (Data


Storage Definition Language). permite especificar características físicas de
la base de datos (volúmenes y archivos donde van a ser almacenados los
datos, etc).

➢ DCL: Lenguaje de control de datos (Data Control Language). encargado del


control y seguridad de los datos (privilegios y modos de acceso, etc).

2. DML: Lenguaje de manipulación de datos (Data Manipulation Language). Lenguaje


de cierta complejidad que permite el manejo y procesamiento del contenido de la base
de datos. En la práctica puede consistir en un subconjunto de instrucciones de otro
lenguaje informático. Las aplicaciones que trabajan sobre la base de datos se
programan en un lenguaje de programación (C, Cobol, ...) insertando en el código
fuente sentencias del DML. Al utilizar un DML se deben especificar los datos que
serán afectados por las sentencias del lenguaje. Un DML puede tener o no
procedimientos, según sea necesario especificar además cómo deben obtenerse
esos datos. Los DML con procedimientos tienen sentencias de control de flujo como
bucles o condicionales. Los DML sin procedimientos son conocidos también como
declarativos.
3. Diccionario de datos: Conjunto de archivos que almacenan convenientemente las
definiciones realizadas utilizando el DML.

➢ Gestor: componente software (programa) encargado de la interface entre las


peticiones de los usuarios de la base de datos y los propios datos en sí.
Interacción con el sistema operativo.
El uso real de un SGBD puede realizarse de forma única o combinada utilizando
directamente el DDL y el DML o bien a través de una interfaz gráfica o basada en
menús. Aunque usualmente se utilizan indistintamente los términos datos e
información, existe una importante distinción entre ellos: datos se re ere a los valores
registrados físicamente en la base de datos, e información alude al significado cado
de esos valores según el sentido que les otorgue un humano. El contenido de la base
de datos puede estructurarse en tres niveles:

➢ Campo: unidad de datos individual de menor tamaño y con significado pleno.


Los campos pueden agruparse para constituir otros más complejos (ej. fecha
de nacimiento). Pueden ser de diversa naturaleza (numérica, alfabética,
multimedia, etc). Tienen un tamaño asociado, medido físicamente en bytes.
➢ Registro: conjunto de campos intrínsecamente relacionados mediante una
asignación común y que determinan la información asociada a uno de los
objetos del mundo real que se pretende modelizar. Suele constituir la unidad
básica de acceso a la base de datos (contenido que se puede almacenar o
recuperar en un solo acceso).
➢ Fichero: conjunto de ocurrencias de un mismo tipo de registros.

Conectividad en dispositivos móviles

Para mediados de 1990 el acceso a una base de datos se logró a través de Internet,
lo que abrió camino hacía nuevas áreas de implementación de los SMBDs; además
permitió la creación de sitios Web más dinámicos, haciendo que Internet ganara
popularidad para el comercio electrónico, sistemas de información, etcétera. En la
década de los noventas el auge de Internet y las bases de datos comienza a integrar
lenguajes como XML (eXtensible Markup Language) en las aplicaciones, además de
que el número de desarrolladores y usuarios aumenta impulsando el uso de los SMBD.
Con el surgimiento de nuevas tecnologías de comunicación inalámbrica y de
dispositivos móviles (DM), se logró el desarrollo de la Computación Móvil (CM) que
se caracteriza por la independencia en localización, movimiento y plataforma en los
dispositivos. Por otra parte, la necesidad de gestionar información desde un ambiente
móvil y la popularidad de las bases de datos, motivó al desarrollo de los Sistemas
Manejadores de Bases de Datos Móviles (SMBDm). En la figura 1 se describe el
desarrollo histórico de los SMBD.

En el campo de los SMBD, se han desarrollado importantes aplicaciones, desde


versiones limitadas para ejecutarse en un DM (Dispositivos Móviles) para después
sincronizarse con el servidor central, hasta productos que van inmersos (embebidos)
en las aplicaciones.

Las bases de datos móviles se consideran las bases de datos de nueva generación,
ya que van dirigidas a sistemas informáticos portátiles como computadoras
personales y dispositivos móviles que se conectan con las estaciones base
(servidores) mediante redes de comunicación digitales inalámbricas, además deben
funcionar mientras estén desconectadas de la red a diferencia de los sistemas de
bases de datos fijos. Las bases de datos móviles utilizan técnicas especiales para la
administración de memoria debido a la capacidad de almacenamiento limitada con la
que cuentan los dispositivos
móviles. Además, el hecho de que se almacenen en el teléfono móvil o computadora
personal permite a los usuarios realizar operaciones sobre la información sin
necesidad de estar conectados a una red, y sincronizar o consultar datos de los
servidores en el momento que se tenga acceso a una conexión inalámbrica. Todas
las funcionalidades de una base de datos y las comunicaciones inalámbricas las
provee un SMBD, cuya arquitectura es descrita en la figura 2.
Para realizar la interconectividad entre el lenguaje de programación java y una base
de datos de mysql, es bastante simple, solo hay que crear un proyecto web utilizando
el IDE Netbeans.
1. Primer paso abrir Netbeans y crear un proyecto nuevo.

2. Agregar un archivo nuevo jsp, para crear una interfaz web.


3. En el jsp creado en el paso anterior se debe agregar el siguiente código.
<%@page import="bd.conexion"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
<link href="css/bootstrap.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div class="container-fluid">
<form action="evento.jsp" method="POST">
<div class="row">
<div class="col-sm-6">
<label class="control-label">Clave</label>
<input type="text" class="form-control" name="cve" value="" />
</div>
<div class="col-sm-6">
<label class="control-label">Evento</label>
<input type="text" class="form-control" name="even" value="" />
</div>
</div>
<div class="row">
<div class="col-sm-6">
<label>Fecha</label>
<input type="text" class="form-control" name="fe" value="" />
</div>
<div class="col-sm-6">
<label>Hora</label>
<input type="text" class="form-control" name="hor" value="" />
</div>
</div>
<input type="submit" class="btn bg-primary" value="Registrar"
name="Registrar" />
<%
conexion d = new conexion();
if (request.getParameter("Registrar") != null) {
String cve, nom, fec, hor;
cve = request.getParameter("cve");
nom = request.getParameter("even");
fec = request.getParameter("fe");
hor = request.getParameter("hor");
d.Registrar("insert into evento values ('" + cve + "','" + nom + "','" + fec
+ "','" + hor + "')");
}
%>
</form>
</div>
</body>
</html>

4. Agregar un nuevo paquete al proyecto creado, la intención es agrupar las clases de


java.
5. Crear una clase dentro del paquete creado en el paso anterior, en este caso se
llama conectar, se recomienda que el nombre refleje su contenido.

6. Agregar el siguiente código, el cual consta de atributos y métodos, así como la


instrucción para la conexión odbc para mysql, esto para indicar el servidor de base
de datos, el nombre de la base de datos, el usuario y contraseña para manipular la
base de datos, estos datos son propios del gestor de base de datos mysql.

package bd;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
*
* @author Angel León Ramos
*/
public class conectar {

Connection con = null;


Statement s = null;
ResultSet r = null;

public conectar(){

public void conectar() {


try {
Class.forName("com.mysql.jdbc.Driver");
Connection con =
DriverManager.getConnection("jdbc:mysql://localhost:3306/primaria", "root", "23");
s = con.createStatement();
} catch (Exception e) {
e.printStackTrace();
}
}

public void desconectar() {


try {
con.close();
s.close();
r.close();
} catch (SQLException e) {
} catch (Exception e) {

}
}
public ResultSet Buscar(String cadena) {
String sql = cadena;
try {
conectar();
r = s.executeQuery(sql);
} catch (Exception e) {
e.printStackTrace();
}
return r;

public void Registrar(String cadena) {


String sql = cadena;
try {
conectar();
s.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
}
desconectar();
}
}
7. Agregar al proyecto la librería que hará posible la comunicación entre la página web
de java y la base de datos de mysql, para ello hay que hacer clic derecho en la carpeta
library dentro del proyecto web

8. Seleccionar de la lista: Mysql JDBC Driver

Este último paso es indispensable, de lo contrario al intentar probar el sitio mandará


error.
9. Finalmente si todo se realizó de acuerdo a los pasos sólo resta probar la página,
para ello, solo es necesario hacer clic derecho sobre el código del archivo jsp creado
y esperar a que se abra en el navegador.

Es importante crear la tabla en la base de datos para poder almacenar los datos, la
tabla se llama evento y tiene la siguiente estructura.

10. En caso que no se habrá en el navegar, al terminar de compilar aparece un enlace,


solo hay que copiarlo y pegarlo en el navegar preferido y se mostrará la página web.
El ejemplo es muy sencillo solo contiene 4 entradas de texto para registrar eventos
dentro de una escuela primaria. Se procede a ingresar los datos para registrarlos en
la base de datos.
Antes de guardar los datos, hay que verificar si la tabla contiene algún registro.

Ahora si en la página hay que escribir los datos que solicitar y hacer clic en el botón
registrar.

Esto recarga la página, pero los datos deben estar en la base de datos, hay que
verificar, al examinar la tabla evento en el gestor de base de datos, se puede ver que
los datos se encuentran registrados.
Ahora hay que agregar un botón para realizar una consulta y que se muestre todos
los datos en la misma página, para ello debajo del código de java del botón registrar
se debe incluir las siguientes líneas.

else if (request.getParameter("Consultar") != null) {


d=new conexion();
rs = d.Buscar("select * from evento");
while (rs.next()) {
out.println("Clave "+ rs.getString(1)+" evento "+ rs.getString(2)+"
fecha "+ rs.getString(3)+" hora "+ rs.getString(4));
}
d.desconectar();
rs.close();
}

Hay que recargar en el navegar la página y se muestra lo siguiente

Retomando que en la unidad 5, se creo un procedimiento llamado Curso, utilizando


una tabla llamada alumnos, con la siguiente estructura y datos:
Agregar un nuevo archivo jsp llamado curso al proyecto web, el cual debe contener
el siguiente código:
<%--
Document : curso
Created on : 20/11/2022, 12:45:57 PM
Author : Angel León Ramos
--%>

<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.CallableStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.ResultSet"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Acceso a procedimiento almacenado</title>
<link href="css/bootstrap.css" rel="stylesheet" type="text/css"/>

</head>
<body>
<div class="container-fluid">
<form action="curso.jsp" method="POST">
<div class="row">
<div class="col-sm-4">
<label class="alert-success">Género</label>
<select name="se" required class="form-control">
<option></option>
<option value="H">Masculino</option>
<option value="M">Femenino</option>
</select>
</div>
<div class="col-sm-2">
<br>
<input type="submit" value="Buscar" name="Buscar" class="btn btn-
danger" />
</div>
</div>
<%
int ca = 0;
String gen = "";
if (request.getParameter("Buscar") != null) {
gen = request.getParameter("se");
try {
Class.forName("com.mysql.jdbc.Driver");
ResultSet rs;
//String dir = "H";
Connection con =
DriverManager.getConnection("jdbc:mysql://localhost/primaria", "root", "12345678");
String procedure = "{ call Cursos(?) }";
CallableStatement cs = con.prepareCall(procedure);
cs.setString(1, gen);
rs = cs.executeQuery();
%>
<table class="table table-striped table-hover">
<thead class="thead-green">
<td>Num</td>
<td>Nombre</td>
<td>País</td>
<td>Curso</td>
</thead>
<%
while (rs.next()) {
ca++;
%>

<tr>
<td><%out.print(ca);%></td>
<td><%out.print(rs.getString("nombre"));%></td>
<td><%out.print(rs.getString("pais"));%></td>
<td><%out.print(rs.getString("curso"));%></td>
</tr>
<%
}
rs.close();
con.close();
%>

</table>
<%
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
%>
</form>
</div>
</body>
</html>
Como se puede ver, la página invoca al procedimiento almacenado llamado curso y
pasa como parámetro la selección de la lista desplegable. El resultado es el siguiente:

Como caso práctico, deben usar cuando meno un procedimiento almacenado y


triggers para validar su información y su proyecto debe tener un menú de opciones
para facilitar su uso, el proyecto debe estar completo e incluir insert, select y update,
todas estas instrucciones se vieron durante el desarrollo de la materia.

También podría gustarte