lunes, 12 de noviembre de 2018

PreparedStatement

                           PreparedStatement
Integrantes:
Alexandra Villanueva Abanto
Crithel Delgado Bustamante

I. Tema: PreparedStatement
1. Contenido
 Definición
La interfaz PreparedStatement hereda de Statement y difiere de esta en dos maneras.
Las instancias de PreparedStatement contienen una sentencia SQL que ya ha sido compilada. Esto es lo que hace que se le llame ‘preparada’.
La sentencia SQL contenida en un objeto PreparedStatement pueden tener uno o más parámetros IN. Un parámetro IN es aquel cuyo valor no se especifica en la sentencia SQL cuando se crea. En vez de ello la sentencia tiene un interrogante (‘?’) como un ‘ancla’ para cada parámetro IN. Debes suministrar un valor para cada interrogante mediante el método apropiado, que puede ser: setInt, setString, etc, antes de ejecutar la sentencia.
Creada por el método prepareStatement - Un objeto PreparedStatement se usa para sentencias SQL que toman uno o más parámetros como argumentos de entrada (parámetros IN).
PreparedStatement tiene un grupo de métodos que fijan los valores de los parámetros IN, los cuales son enviados a la base de datos cuando se procesa la sentencia SQL.
Las Instancias de PreparedStatement extienden, es decir, heredan de Statement y por tanto heredan los métodos de Statement. Un objeto PreparedStatement es potencialmente más eficiente que un objeto Statement porque este ha sido precompilado y almacenado para su uso futuro.
Son muy útiles cuando una sentencia SQL se ejecuta muchas veces cambiando sólo algunos valores.
Se utiliza para enviar sentencias SQL pre compiladas con uno o más parámetros.
Se crea un objeto PreparedStatement especificando la plantilla y los lugares donde irán los parámetros.
Los parámetros son especificados después utilizando los métodos setXXX(.) indicando el número de parámetro y el dato a insertar en la sentencia.
La sentencia SQL y los parámetros se envían a la base de datos cuando se llama al método: executeXXX()
Ejemplos:
El siguiente fragmento de código, donde con es un objeto Connection, crea un objeto PreparedStatement que contiene una instrucción SQL:
//Creamos un objeto PreparedStatement desde el objeto Connection
PreparedStatement ps = con.prepareStatement(
"select * from Propietarios where DNI=? AND NOMBRE=? AND EDAD=?");

//Seteamos los datos al prepared statement de la siguiente forma:
ps.setString(1, dni);
ps.setString(2, nombre);
ps.setInt(3, edad);

//Ejecutamos el PreparedStatement, en este caso con executeQuery()
ResultSet rs= ps.executeQuery();

Ejemplo de PreparedStatement de consulta
Por ejemplo supongamos que hay un campo de texto en el que el usuario puede introducir su dirección de correo electrónico y con este dato se desea buscar al usuario:
Connection con = DriverManager.getConnection(url);
String consulta = "SELECT usuario FROM registro WHERE email like ?";
PreparedStatement pstmt = con.prepareStatement(consulta);
pstmt.setString(1 , campoTexto.getText());
ResultSet resultado = ps.executeQuery();
Ejemplo de PreparedStatement de modificación
En el siguiente ejemplo se va a insertar un nuevo registro en una tabla:
Connection con = DriverManager.getConnection(url);
String insercion = "INSERT INTO registro(usuario , email , fechaNac) values ( ? , ? , ? )");
PreparedStatement pstmt = con.prepareStatement(consulta);
String user = . . . ;
String email = . . . ;
Date edad = . . . ; //O int edad;
pstmt.setString(1 , user);
pstmt.setString(2 , email);
pstmt.setDate(3 , edad); // setInt(3, edad);
ps.executeUpdate();
Como los objetos PreparedStatement están precompilados, su ejecución es más rápida que los objetos Statement. Consecuentemente, una sentencia SQL que se ejecute muchas veces a menudo se crea como PreparedStatement para incrementar su eficacia.
Siendo una subclase de Statement, PreparedStatement, como ya se ha mencionado hereda toda la funcionalidad de Statement. Además, se añade un conjunto completo de métodos necesarios para fijar los valores que van a ser enviados a la base de datos en el lugar de las ‘anclas’ para los parámetros IN.

También se modifican los tres métodos execute, executeQuery y executeUpdate de tal forma que no toman argumentos. Los formatos de Statement de estos métodos (los formatos que toman una sentencia SQL como argumento) no deberían usarse nunca con objetos PreparedStatement, a pesar de estar disponibles para ellos.

 Método executeUpdate()
El método executeUpdate() es el que realmente ejecuta la consulta en la base de datos, mientras que el método close()  permite liberar los recursos asignados a la conexión abierta.
El ejemplo a continuación inserta tuplas a  una tabla llamadas
  1.       import  java.sql.*;

  2.        public class Insertame {

  3.           public static void main ( String args[] ) throws Exception {
  4.               Connection con = null;
  5.               Statement  stmt = null;

  6.               try {
  7.                   String url = "jdbc:mysql://barbanegra/ligas";
  8.                   String usuario = "yomismo";
  9.                   String contraseña = "santoyseña";
  10.                   Class.forName("com.mysql.jdbc.Driver").newInstance();
  11.                   con = DriverManager.getConnection(url,usuario,contraseña);
  12.                   if ( con != null )
  13.                     System.out.println("Se ha establecido una conexión a la base de datos " +
  14.                                        "\n " + url );

  15.                   stmt = con.createStatement();
  16.                   stmt.executeUpdate("INSERT INTO interes (interes_nombre, interes_url," +
  17.                      "interes_tipo) VALUES ('" + args[0] + "', '" + args[1] + "', '" + args[2] +"')");
  18.                   System.out.println("Los valores han sido agregados a la base de datos ");
  19.                   }
  20.                   catch( SQLException e ) {
  21.                       e.printStackTrace();
  22.                   }

  23.               finally {
  24.                   if ( con != null ) {
  25.                       try    {
  26.                           con.close();
  27.                           stmt.close();
  28.                       } catch( Exception e ) {
  29.                           System.out.println( e.getMessage());
  30.                       }
  31.                   }
  32.               }
  33.           }
  34.        }

 Uso de CallableStatement

Al igual que en createStatement y prepareStatement, existen varias versiones de prepareCall que proporcionan soporte para especificar características de ResultSet. A diferencia de prepareStatement, el método prepareCall no proporciona variantes para trabajar con claves generadas automáticamente a partir de CallableStatements (JDBC 3.0 no soporta este concepto). A continuación se ofrecen algunos ejemplos de llamadas válidas al método prepareCall:
Ejemplo: método prepareCall
// El siguiente código es nuevo en JDBC 2.0

CallableStatement cs2 = conn.prepareCall("? = CALL ADDEMPLOYEE(?, ?, ?)", 
    ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATEABLE);

// Nuevo en JDBC 3.0

CallableStatement cs3 = conn.prepareCall("? = CALL ADDEMPLOYEE(?, ?, ?)",
    ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATEABLE,
    ResultSet.HOLD_CURSOR_OVER_COMMIT);

2. Resumen

La sentencia SQL contenida en un objeto PreparedStatement pueden tener uno o más parámetros IN. Un objeto PreparedStatement es potencialmente más eficiente que un objeto Statement porque este ha sido precompilado y almacenado para su uso futuro. Se utiliza para enviar sentencias SQL pre compiladas con uno o más parámetros.

En el siguiente ejemplo se va a insertar un nuevo registro en una tabla

Siendo una subclase de Statement, PreparedStatement, como ya se ha mencionado hereda toda la funcionalidad de Statement. Además,se añade un conjunto completo de métodos necesarios para fijar los valores que van a ser enviados a la base de datos en el lugar de las ‘anclas’ para los parámetros IN. Los formatos de Statement de estos métodos no deberían usarse nunca con objetos PreparedStatement, a pesar de estar disponibles para ellos.

[...]

El método executeUpdate es el que realmente ejecuta la consulta en la base de datos, mientras que el método close permite liberar los recursos asignados a la conexión abierta. El ejemplo a continuación inserta tuplas a una tabla llamada interes perteneciente a la base de datos ligas.

3. Summary


The SQL statement contained in a PreparedStatement object can have one or more IN parameters. A PreparedStatement object is potentially more efficient than a Statement object because it has been precompiled and stored for future use. It is used to send pre-compiled SQL statements with one or more parameters. In the following example, a new record will be inserted in a table Being a subclass of Statement, PreparedStatement, as already mentioned, inherits all the functionality of Statement. In addition, a complete set of methods necessary to set the values ​​to be sent to the database in place of the 'anchors' for the IN parameters is added. The Statement formats of these methods should never be used with PreparedStatement objects, despite being available to them. [...] The method executeUpdate is the one that actually executes the query in the database, while the close method allows to release the resources assigned to the open connection. The example below inserts tuples to a table called interest belonging to the database leagues.

4. Recomendaciones

  1. Para poder usar un PreparedStatement real desde java es necesario que tanto la base de datos como el driver java que usemos soporten el PreparedStatement.
  2. MySQL si soporta los PreparedStatement y los drivers modernos de MySQL para java tambien lo soportan. Sin embargo debemos habilitarlos en el momento de establecer na conexion.
  3. Por razones de rendimiento, intenta minimizar llamadas innecesarias a Connection.prepareCall() reusando instanciasde CallableStatement.


5. Conclusiones


  1. Connection.prepareCall() es un método costoso, debido a la petición de metadatos que hace el driver para suportar los parámetros de salida. 
  2. Como hemos visto la interfaz CallableStatements nos permite ejecutar procedimientos almacenados e interactuar con el resultado de una manera rápida y sencilla posicionandose como una buena opción a la hora de trabajar con procedimientos almacenados. Espero que les sirva de utilidad. 
  3.  El método executeUpdate únicamente permite realizar sentencias de actualización de la BD: creación de tablas (CREATE), inserción (INSERT), actualización (UPDATE) y borrado de datos (DELETE).


6. Apreciación del Equipo


  1.  Concluimos que utilizando este objeto en java el programador  tiene que saber usar sentencias SQL que toman uno o más parámetros como argumentos de entrada (parámetros IN). Además que este objeto PreparedStatement es potencialmente más eficiente que un objeto Statement porque este ha sido precompilado y almacenado para su uso futuro.
  2. Desde nuestro punto de vista la clase PreparedStatement resulta muy indispensable, no solo esta clase sino también las demás que hemos estado viendo anteriormente, en otras palabras, este objeto es el componente que nos permitirá hacer uso de los procedimientos almacenados en donde nosotros los creamos a partir de nuestra base de datos, para luego poder ejecutarlos y así poderlos llamar desde un formulario creado en nuestro proyecto que estemos realizando.

7. Glosario de Términos

  1.     Compilación: Significa traducir un código de programación a código ejecutable por la máquina. Para compilar un código fuente y convertirlo en ejecutable hay distintas formas dependiendo del compilador que se utilice.
  2.      Sentencia precompilada: Significa que cuando se ejecuta el objeto PreparedStatement, el controlador de base de datos puede ejecutarla sin tener que compilarla primero.
  3.         ParámetroEs un tipo de variable que es recibida por una función, procedimiento subrutina.
  4.        HERENCIA: La herencia es específica de la programación orientada a objetos, donde una clase nueva se crea a partir de una clase existente. La herencia (a la que habitualmente se denomina subclases) proviene del hecho de que la subclase (la nueva clase creada) contiene los atributos y métodos de la clase primaria.
  5. COMPILADO: Un lenguaje compilado es un lenguaje cuyas implementaciones son normalmente Compiladas y no intérpretes
  6. INTERPRÉTE: Es un programa informático capaz de analizar y ejecutar otros programas. Los intérpretes sólo realizan la traducció
  7.   Parámetros: representa un dato que se ofrece una función con un fin específico. Por ejemplo, una rutina que tenga como finalidad devolver el número más alto de una lista, esperará que le pasemos dicho conjunto de valores como parámetro para realizar su tarea.
  8.   Hereda: La herencia facilita la creación de objetos a partir de otros ya existentes e implica que una subclase obtiene todo el comportamiento (métodos) y eventualmente los atributos (variables) de su superclase.
  9.  Extensión: es una cadena de caracteres anexada al nombre de un archivo, usualmente precedida por un punto. Su función principal es diferenciar el contenido del archivo de modo que el sistema operativo disponga el procedimiento necesario para ejecutarlo o interpretarlo, sin embargo, la extensión es solamente parte del nombre del archivo y no representa ningún tipo de obligación respecto a su contenid
  10. Servidor: es una aplicación en ejecución (software) capaz de atender las peticiones de un cliente y devolverle una respuesta en concordancia. Los servidores se pueden ejecutar en cualquier tipo de computadora.
  11. Interfaz: En informática se utiliza para nombrar a la conexión funcional entre dos sistemas o dispositivos de cualquier tipo dando una comunicación entre distintos niveles. Su plural es interfaces.
8. Bibliografía

lunes, 15 de octubre de 2018

STATEMENT

                                                                    Programación II – JAVA
I. Tema: Statement
1. Contenido

1.1.-Definición
Un objeto Statement se usa para enviar sentencias SQL a la base de datos. Actualmente hay tres tipos de objetos Statement, todos los cuales actúan como contenedores para la ejecución de sentencias en una conexión dada: Statement, PreparedStatement que hereda de Statement y CallableStatement que hereda de PreparedStatement. Estas estàn especializadas para enviar tipos particulares de sentencias SQL, Un objeto Statement se usa para ejecutar una sentencia SQL simple sin parámetros. Un objeto PreparedStatement se usa para ejecutar sentencias SQL precompiladas con o sin parámetros IN; y un objeto CallableStatement se usa para ejecutar un procedimieno de base de datos almacenado.
La interfase Statement suminstra métodos básicos para ejecutar sentencias y devolver resultados. La interfase PreparedStatement añade métodos para trabajat con los parámetros IN; y la interfase CallableStatement añade métodos para trabajar con parameters OUT.

1.2.-Propiedades
Empezamos por descargar el conector MySQL para Java desde su sitio web: conector MySQL. Una vez que hemos descargado el fichero .zip correspondiente a nuestra plataforma lo descomprimimos en el equipo y  buscamos dentro de la carpeta principal un archivo llamado mysql-connector con extensión .jar.
Ahora tenemos que agregar este archivo jar a nuestra aplicación de NetBeabs, para ello  hacemos Click derecho sobre el nombre del proyecto y seleccionamos propiedades. En la ventana siguiente seleccionamos en librerías y posteriormente pulsamos en el botón –>Add Jar/folder. Finalmente accedemos a la localización del conector que descargamos anteriormente y pulsamos OK.

Después de importar el conector ya casi estamos preparados, aunque antes de continuar necesitamos un servidor local y una base de datos.
En mi caso utilizo phpMyAdmin para crear la bd java1 con nombre de usuario root y sin contraseña. También la tabla Motor con 3 columnas: Marca, Modelo y Potencia.

En la siguiente clase insertamos 2 registros en la tabla motor con el método executeUpdate(). Finalmente mostramos los datos en pantalla ordenados por Potencia.
1.3.-Ejemplo
public void CargaCombo(){
try{
cnx.rs=cnx.stm.executeQuery("SELECT * FROM Linea ORDER BY 1");
while(cnx.rs.next()){
jCboLinea.addItem(cnx.rs.getString(2));
}
}catch(Exception a){
System.out.println(a.getMessage());
}
}
public void Mostrar(){
String cod;
try{
cod=jTblArticulo.getValueAt(jTblArticulo.getSelectedRow(), 0).toString();
cnx.rs=cnx.stm.executeQuery("SELECT * FROM Articulo WHERE codarticulo=' "+cod+" ' ");
if(cnx.rs.next()){
this.jTxtCod.setText(cnx.rs.getString(1));
this.jTxtDes.setText(cnx.rs.getString(2));
this.jTxtPre.setText(cnx.rs.getString(3));
this.jTxtStock.setText(cnx.rs.getString(4));
this.jCboLinea.setSelectedItem(cnx.rs.getString(5));
}
}catch(Exception a){
System.out.println(a.getMessage());
}
}
public void LimpiarTabla(DefaultTableModel model){
for(int i=model.getRowCount()-1;i>=0;i--){
model.removeRow(i);
}
}
public void Llenartabla(){
try{
cnx.rs=cnx.stm.executeQuery("SELECT codarticulo,descripcion,precio,stock,idlinea FROM Articulo");
DefaultTableModel model=(DefaultTableModel)jTblArticulo.getModel();

LimpiarTabla(model);

2. Resumen
sirve para procesar una sentencia SQL estática y obtener los resultados producidos por ella. Solo puede haber un ResultSet abierto para cada objeto Statement en un momento dado. 

3. Summary
It serves to process a static SQL statement and obtaining the results produced by it. There can only be an open ResultSet object for each Statement at any given time. 

4. Recomendaciones

5. Conclusiones
Todas la variables de conexion (cn), Statement (St) y ResultSet(reg) fueron declaradas fuera de todos los metodos, es decir son globales y pueden verse en toda la clase no importa en que proceso lo utilizemos, y para saldar la duda, anteriormente dije que todos estos son metodos, asi es pero por que ejecutar y consulta los llame funciones, es sencillo recordemos algo de teoria, toda funcion retorna un valor es por ello que se le llama funciones a ejecutar y a consulta por que regresan el valor de la variable error y reg respectivamente.

6. Apreciación del Equipo

7. Glosario de Términos

8. Bibliografía o Linkografia

domingo, 9 de septiembre de 2018

JAVACONBASEDEDATOS




Programación II – JAVA
Integrantes:

  1. Alexandra Villanueva Abanto
  2. Marilin Pisco Coronel


I. Tema: Java con Base Datos

1. Contenido
 Definición
I.      Tema: Java con Base Datos
1.        Contenido
Definición: Java Database Connectivity, más conocida por sus siglas JDBC, es una API que permite la ejecución de operaciones sobre bases de datos desde el lenguaje de programación Java, independientemente del sistema operativo donde se ejecute o de la base de datos a la cual se accede, utilizando el dialecto SQL del modelo de base de datos que se utilice

  •    Objetos Connection:
    El objeto 
    Connection es el principal objeto utilizado para proporcionar un vínculo entre las bases de datos y una aplicación en Java. Connection proporciona métodos para manejar el procesamiento de transacciones, para crear objetos y ejecutar instrucciones SQL, y para crear objetos para la ejecución de procedimientos almacenados.

Se puede emplear tanto el objeto Driver como el objeto DriverManager para crear un          objeto Connection. Se utiliza el método connect() para el objeto Driver, y el                        método getConnection()para el objeto DriverManager.


El objeto Connection proporciona una conexión estática a la base de datos. Esto significa que hasta que se llame en forma explícita a su método close() para cerrar la conexión o se destruya el objeto Connection, la conexión a la base de datos permanecerá activa.

La manera más usual de establecer una conexión a una base de datos es invocando el método getConnection() de la clase DriverManager. A menudo, las bases de datos están protegidas con nombres de usuario (login) y contraseñas (password) para restringir el acceso a las mismas. El método getConnection() permite que el nombre de usuario y la contraseña se pasen también como parámetros.

String usuario = "root";
String contraseña = "123456789";
Connection conn = DriverManager.getConnection(url,usuario,contraseña)

A través de la conexión nos comunicamos con la Base de Datos, enviándole sentencias SQL.

Las sentencias SQL se envían a través de “Statements”.

Existen tres tipos de “Statements” y un método para generar cada tipo.

  • Statement:Se usa para ejecutar sentencias SQL. Lleva asociada una conexión que sirvió como origen para su creación.
Se crea con el método de la clase:
"java.sql.Connection":
public Statement createStament() trows java.sql.SQLException

Las sentencias se cierran con el método:
public void close() trows java.sql.SQLException

El método para ejecutarla depende del tipo de sentencia SQL que contenga.

  • Sentencias SELEC: 
Se usa el método: executeQuery(String sql).
Devuelve una instancia de java.sql.ResultSet.

Sentencias INSERT, UPDATE, DELETE: se usa el método:
executeUpdate(String sql).

Devuelve un int con el número de filas afectadas.


  • ResultSet:Representa el resultado de la ejecución de una sentencia SQL.
Lleva asociadas las filas y columnas que cumplían con la sentencia SQL.


Implementa métodos para:
-Acceder a las filas que componen el resultado.
-Acceder al valor de cada columna de la fila seleccionada.

Los ResultSet se cierran mediante el método:
public boolean close() trows java.sql.SQLException

El ResultSet se cierra automáticamente al cerrar el Statement que la creó. No obstante, no está demás cerrarlo.

II. Resumen:

Objetos Connection
Connection proporciona métodos para manejar el procesamiento de transacciones, para crear objetos y ejecutar instrucciones SQL, y para crear objetos para la ejecución de procedimientos almacenados. Esto significa que hasta que se llame en forma explícita a su método close para cerrar la conexión o se destruya el objeto Connection, la conexión a la base de datos permanecerá activa. La manera más usual de establecer una conexión a una base de datos es invocando el método getConnection de la clase DriverManager. A menudo, las bases de datos están protegidas con nombres de usuario y contraseñas para restringir el acceso a las mismas. 

El método getConnection permite que el nombre de usuario y la contraseña se pasen también como parámetros. 

[...]

Existen tres tipos de «Statements» y un método para generar cada tipo.

ResultSet

Representa el resultado de la ejecución de una sentencia SQL.

Implementa métodos para

El ResultSet se cierra automáticamente al cerrar el Statement que la creó.

III. Summary:

Connection Objects
Connection provide methods to handle transaction processing, to create objects and execute SQL statements, and to create objects for the execution of stored procedures. This means that until your method is explicitly called to close the connection or the Connection object is destroyed, the connection to the database will remain active. The most common way to establish a connection to a database is by invoking the getConnection method of the DriverManager class. Often, databases are protected with usernames and passwords to restrict access to them.
The getConnection method allows the user name and password to be passed as parameters as well.
There are three types of «Declarations» and a method to generate each type.
Resulting set
Represents the result of executing an SQL statement.
Implement methods for
The ResultSet is automatically closed upon closing the Statement that created it.

IV. Recomendaciones:
  • Para que exista un enlace remoto con la Base de Datos, la aplicacion debe conectarse directamente a la Base de Datos, sino que mediante los drivers JDBC - ODBC.
  • Si escribe una sentencia SQL que va a utilizar más de una vez, el rendimiento será mayor si la sentencia es un objeto PreparedStatement que si es un objeto Statement. Cada vez que se ejecuta una sentencia, se realiza un proceso de dos pasos: la sentencia se prepara y luego se procesa.
  • El uso de procedimientos almacenados está soportado en Java. El rendimiento de los procedimientos almacenados puede ser mayor al permitir que el controlador JDBC ejecute SQL estático en vez de SQL dinámico.
V. Conclusiones:
  • El propósito de una base de datos es responder a consultas y ejecutar transacciones de datos, también se entiende que tiene una elevada capacidad y solidez para administrar la información sin fallos ni errores.
  • MySQL ha sido un gestor de base de datos muy útil desde que fue creado, y con el tiempo, nuevas funciones se le añadieron, expandiéndolo y volviéndolo más útil, y convirtiéndose así en uno de los gestores de bases de datos más utilizados a nivel mundial, junto a Oracle.
VI. Apreciación del Equipo:
  • Durante el trayecto del trabajo que se ha realizado en el grupo, hemos llegado a apreciar de que este lenguaje de programación nos ayuda a enlazar la estructura con la base de datos.
  • Al investigar este tema de Java con Base de Datos nos  sido de sma importancia recopilar conocimientos, y a la vez entender el amplio campo de la programacion.
VII. Glosario de Términos:
  • Clase: Colección encapsulada de datos y operaciones que actúan sobre los datos. El concepto de clase es fundamental en programación orientada a objetos.
  • Función: Construcción matemática a la que se puedan aplicar valores y que devuelve un resultado.
  • Interfaz: Una interfaz se trata como una clase especial de Java. Cada interface se compila en un archivo independiente de bytecode, tal como una clase ordinaria. No se puede crear una instancia de la interfaz.
  • Objeto: Una instancia de una clase específica. En general, se puede construir cualquier número de objetos a partir de una clase.
  • Parámetro: Los parámetros formales se especifican en una declaración de un método en una llamada a un método.
  • Programa: Un conjunto de instrucciones que describen alguna aplicación o actividad ejecutada en una computadora.
  • Público (public): Un modificador de clases, datos y métodos a los que se puede acceder por todos los programas.
  • Ejecutar: Hacer funcionar un programa instrucción a instrucción.
  • API: Una API (siglas de 'Application Programming Interface') es un conjunto de reglas (código) y especificaciones que las aplicaciones pueden seguir para comunicarse entre ellas: sirviendo de interfaz entre programas diferentes de la misma manera en que la interfaz de usuario facilita la interacción humano-software.
  • ODBC: Open DataBase Connectivity (ODBC) es un estándar de acceso a las bases de datos desarrollado por SQL Access Group (SAG) en 1992. El objetivo de ODBC es hacer posible el acceder a cualquier dato desde cualquier aplicación, sin importar qué sistema de gestión de bases de datos (DBMS) almacene los datos.
  • APPLETS: Un applet es un componente de una aplicación que corre en el contexto de otro programa, por ejemplo un navegador web. El applet debe correr en un contenedor, que lo proporciona un programa anfitrión, mediante un plugin.

VIII.-Bibliografía o Linografía