martes, 6 de diciembre de 2016

lunes, 24 de octubre de 2016

LA CLASE CONNECTION JAVA.







Ingeniería de Sistemas y Telemática


DOCENTE          :     Ing. Marco Aurelio Porro Chulli.
ASIGNATURA    :    Desarrollo de Software I.
INTEGRANTES  :    Vicente Wualdir Alberca Rojas.
                                 Wilder Fuentes Araujo.
AÑO                   :     2016

lunes, 26 de septiembre de 2016

JAVA CON BASE DE DATOS.












DOCENTE           :     Ing. Marco Aurelio Porro Chulli.



ASIGNATURA    :  Desarrollo de Software I.



INTEGRANTES  :  Vicente Wualdir Alberca Rojas.
                               Wilder Fuentes Araujo.



AÑO                    :  2016


viernes, 16 de septiembre de 2016

JDBC







Desarrollo de Software I

 

Ingeniería de Sistemas y Telemática



 DOCENTE          :   Ing. Marco Aurelio Porro Chulli.


ASIGNATURA   :     Desarrollo de Software I.

Ciclo                 :    V.
Integrantes: 

1.      ALBERCA ROJAS VICENTE WUALDIR.
2.    FUENTES ARAUJO WILDER.



                                

DESARROLLO DE SOFTWARE.
      I.        Tema: JDBC

1.     Contenido.



*    Capa de acceso de datos, creación.
Una capa de acceso a datos o DAL (del inglés data Access layer) en los programas                  informáticos, es una capa de un programa informático que proporciona acceso simplificado a los datos almacenados en el almacenamiento persistente de algún tipo, tal como una entidad-relación de base de datos. Este acrónimo se usa predominantemente en entornos Microsoft ASP.NET.

Además, los métodos de la lógica de negocio de una aplicación se pueden asignar a la capa de acceso a datos. Así, por ejemplo, en vez de hacer una consulta en una base de datos en busca de todos los usuarios de varias tablas de la aplicación puede llamar a un solo método de una DAL que abstrae las llamadas bases de datos.

Las aplicaciones que utilizan una capa de acceso a datos puede ser cualquiera de los servidores de base de datos dependiente o independiente. Si la capa de acceso a datos es compatible con varios tipos de bases de datos, la aplicación se vuelve capaz de utilizar lo que las bases de datos de la CHA puede hablar.

La creación de reflejo de la base de datos es una solución de software destinada a aumentar la disponibilidad de la base de datos y la redundancia de los datos. El controlador JDBC de Microsoft SQL Server ofrece una compatibilidad implícita con la creación de reflejo de la base de datos, de modo que el desarrollador de software no tenga que escribir ningún código ni realizar ninguna otra acción una vez configurado para la base de datos.
La creación de reflejo de la base de datos, implementada para cada base de datos, conserva una copia de una base de datos de producción de SQL Server en un servidor en espera. Este servidor es un servidor en estado de espera activa o semiactiva según la configuración y el estado de la sesión de creación de reflejo de la base de datos. Un servidor en estado de espera activa admite una conmutación por error rápida sin que se produzca una pérdida de las transacciones confirmadas y un servidor en estado de espera semiactiva admite el forzado del servicio (con una posible pérdida de datos).

           


*    Configuración de conexión BD con NetBeans.
Netbeans permite realizar conexiones a cualquier base de datos que cuente con un driver JDBC y ejecutar comandos SQL sobre la conexión. Revise la estructura de la base de datos a través de la conexión que se crea en la pestaña Services→Databases.



  

Dirigase a la pestaña Services.





 Enseguida, haga click derecho sobre Databases y seleccione New Connection.

El ventana New Connection Wizard seleccione en la lista desplegable Driver el correspondiente a Oracle.

Seleccione el driver de oracle que se va a utilizar:












La siguiente imagen muestra la información necesaria para crear la conexión:

·         Host: la ip o el nombre de la maquina donde se encuentra instalado oracle, para este ejemplo se refiere a fn3.oracle.virtual.uniandes.edu.co
·         Port: hace referencia al puerto de escucha donde se encuentra instalado Oracle 1521
·         SID: hace referencia al nombre de la escucha de base de datos que se está utilizando para este ejemplo se está utilizando prod.
·         User Name: El usuario de la base de datos. En éste ejemplo, es CSOF5302M1520.
·         Password: La contraseña de la base de datos.
·         JDBC URL: Es la dirección de la base de datos. En todos los casos, la dirección es la siguiente: jdbc:oracle:thin:@host:port:sid


Una vez se haya ingresado toda la información, haga click en Finish para crear la conexión a la base de datos.
Finalmente, ya agregada la nueva base de datos y su respectiva conexión, ésta será visible en el árbol de Databases en la pestaña Services tal como se muestra a continuación:



                 
*      Definición de JDBC. Tipos. Aplicaciones.

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.
El API JDBC se presenta como una colección de interfaces Java y métodos de gestión de manejadores de conexión hacia cada modelo específico de base de datos. Un manejador de conexiones hacia un modelo de base de datos en particular es un conjunto de clases que implementan las interfaces Java y que utilizan los métodos de registro para declarar los tipos de localizadores a base de datos (URL) que pueden manejar. Para utilizar una base de datos particular, el usuario ejecuta su programa junto con la biblioteca de conexión apropiada al modelo de su base de datos, y accede a ella estableciendo una conexión; para ello provee el localizador a la base de datos y los parámetros de conexión específicos. A partir de allí puede realizar cualquier tipo de tarea con la base de datos a la que tenga permiso: consulta, actualización, creación, modificación y borrado de tablas, ejecución de procedimientos almacenados en la base de datos, etc.


El Controlador JDBC de Microsoft para SQL Server admite el uso de los tipos de datos básicos y avanzados de JDBC dentro de una aplicación Java que use SQL Server como base de datos.
El sistema de tipos de JDBC arbitra la conversión entre los tipos de datos de SQL Server y los tipos y objetos del lenguaje Java. Los tipos de JDBC se modelan en los tipos SQL-92 y SQL-99. El controlador JDBC sigue la especificación de JDBC y está diseñado para proporcionar un equilibrio correcto derecho entre previsibilidad y flexibilidad.
En los temas de esta sección se describe cómo utilizar los tipos de datos básicos y avanzados, y cómo se pueden convertir en otros tipos de datos.



En esta sección

Tema
Descripción
Describe los tipos de datos básicos de JDBC. Incluye ejemplos de cómo trabajar con los tipos de datos utilizando conjuntos de resultados, consultas parametrizadas y procedimientos almacenados.
Describe cómo el controlador JDBC genera fechas.
Describe los tipos de datos avanzados de JDBC.
Describe las diferencias entre los diversos tipos de datos del controlador JDBC.
Describe cómo se administra la conversión de tipos de datos cuando se usan métodos establecedor y captador.
Describe la compatibilidad con los tipos del juego de caracteres nacionales.
Describe la interfaz SQLXML. También describe cómo leer y escribir un XML desde y en una base de datos relacional con el tipo de datos Java de SQLXML.
Explica las interfaces que tienen los métodos y constantes específicos del Controlador JDBC de Microsoft para SQL Server que permiten que un servidor de aplicaciones cree un proxy de la clase; asimismo, describe la compatibilidad con la interfaz java.sql.Wrapper.

Aplicaciones.

Las aplicaciones de ejemplo del Controlador JDBC de Microsoft para SQL Server muestran varias características del controlador JDBC. Además, describen las prácticas recomendadas de programación que puede aplicar al usar el controlador JDBC con una base de datos de SQL Server.
Todas las aplicaciones de ejemplo se incluyen en archivos de código *.java que se pueden compilar y ejecutar en el equipo local, y se encuentran en varias subcarpetas de la siguiente ubicación:
<directorio de instalación de> \sqljdbc_ <versión> \ <idioma> \muestras
En los temas de esta sección se describe cómo configurar y ejecutar las aplicaciones de ejemplo, y se incluye una descripción de lo que demuestran.

En esta sección.

 

Tema
Descripción
Estas aplicaciones de ejemplo demuestran cómo conectarse a una base de datos de SQL Server. Además, explican los distintos modos en que se pueden recuperar datos de una base de datos de SQL Server.
Estas aplicaciones de ejemplo demuestran cómo usar los métodos de tipos de datos del controlador JDBC para trabajar con los datos de una base de datos de SQL Server.
Estas aplicaciones de ejemplo demuestran cómo usar los conjuntos de resultados para procesar los datos de una base de datos de SQL Server.
Estas aplicaciones de ejemplo demuestran cómo utilizar el almacenamiento en búfer adaptable para recuperar datos de valores grandes de una base de datos de SQL Server sin la sobrecarga que suponen los cursores de servidor.








*      Uso de las clases Class, Connection, DriverManager.

JDBC (Java DataBase Connectivity) es la API que permite la conexión de un programa Java y una base de datos relacional.
Se encuentra dentro del paquete java.sql.
Incluye clases e interfaces que permiten el acceso a la bases de datos para ejecutar consultas, actualizaciones, ejecutar procedimientos, etc.
Algunas de las clases e interfaces de JDBC son:

Clase / Interface
Función
Clase DriverManager
Establece la conexión con la base de datos
Interface Connection
Representa una conexión con la BD
Interface Statement
Ejecución de consultas SQL
Interface PreparedStatement
Ejecución de consultas preparadas y procedimientos almacenados
Interface ResultSet
Manipulación de registros en consultas de tipo Select
Interface ResultSetMetadata
Proporciona información sobre la estructura de los datos.

El objetivo de las interfaces de JDBC es definir como trabajar con la base de datos:
como establecer la conexión, como ejecutar una consulta, etc.
Para poder ejecutar nuestro programa necesitamos las clases que implementen estas
interfaces.



Establecer una conexión con la base de datos.

El siguiente paso es establecer una conexión con la base de datos. Hay dos opciones para obtener una conexión la primera es crear una nueva conexión con la base de datos que será la que veremos en este ejemplo y la otra es obtener la conexión de un pool de conexiones creado previamente que es una opción más eficiente porque no hace falta estar abriendo y cerrando conexiones continuamente ya que simplemente se cogen las conexiones de pool cuando se necesitan y se dejan en el pool cuando ya no se necesitan para que puedan volver a usarse. En un artículo previo, Como crear un pool de conexiones en Tomcat, puedes ver un ejemplo de cómo usar un pool de conexiones con dicho servidor pero para un ejemplo de una aplicación de escritorio como la que vamos a ver supuestamente vamos a tener pocas llamadas a base de datos por lo que no se va a notar mucha diferencia.
1


//Connection cn = DriverManager.getConnection("jdbc:mysql://servidor_bd:puerto/nombre_bd", "usuario", "contraseña");

2//Connection cn = DriverManager.getConnection("jdbc:mysql://localhost:3306/cuentas", "root", "");
Para obtener una conexión tenemos que hacer uso del método getConnection de DriverManager y le tenemos que pasar como parámetros, la base de datos, el usuario y la contraseña. Si en lugar de usar mysql se usa otra base de datos el formato de la url de la base de datos cambia, por ejemplo, para oracle el formato es jdbc:oracle:<tipo_driver>:@<<base_datos>.

          
*    Ejemplos.


 1: Modificar el teléfono del primer contacto de la tabla persona con nombre Juan.
import java.sql.*;
public class EjemploAccesoBD3 {
    public static void main(String[] args) {
        Connection conexion = null;
        int id;
        try {
            // Cargar el driver
            Class.forName("com.mysql.jdbc.Driver");

            // Se obtiene una conexión con la base de datos.
    conexion = DriverManager.getConnection("jdbc:mysql://localhost/prueba", "root", "1daw");

            // Se crea un Statement, para realizar el query
            Statement s = conexion.createStatement();
           
            // Se realiza la consulta
            // Queremos obtener el id del primer contacto con nombre Juan
            ResultSet rs = s.executeQuery("SELECT id FROM contacto WHERE nombre='Juan'");
           
            
            if(rs.next()){   //Si rs.next() devuelve true significa que al menos hay un registro
               id = rs.getInt("id");  //se obtienen su id
               //se actualiza el registro
               s.executeUpdate("UPDATE contacto SET telefono='987654321' WHERE id="+id);
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } catch (ClassNotFoundException e) {
            System.out.println(e.getMessage());
        } finally { // Se cierra la conexión con la base de datos.
            try {
                if (conexion != null) {
                    conexion.close();
                }
            } catch (SQLException ex) {
                System.out.println(ex.getMessage());
            }
        }
    }
}



2: Crear una tabla e insertar datos.
Crearemos la tabla contactos dentro de la base de datos prueba.
import java.sql.*;
public class EjemploAccesoBD2 {
    public static void main(String[] args) {
        Connection conexion = null;
        try {
            // Cargar el driver
            Class.forName("com.mysql.jdbc.Driver");

            // Se obtiene una conexión con la base de datos.
    conexion = DriverManager.getConnection("jdbc:mysql://localhost/prueba", "root", "1daw");

            // Se crea un Statement, para realizar el query
            Statement s = conexion.createStatement();

            //se crea una tabla nueva
            s.executeUpdate("CREATE TABLE contacto (id INT AUTO_INCREMENT,
                                      PRIMARY KEY(id), nombre VARCHAR(20),
                                      apellidos VARCHAR(20), telefono VARCHAR(20))");

            //Los datos que vamos a insertar los tenemos en 3 arrays
            String nombres[] = {"Juan", "Pedro", "Antonio"};
            String apellidos[] = {"Gomez", "Lopez", "Alvarez"};
            String telefonos[] = {"987452154", "989654125", "985321478"};

            //se insertan datos en la tabla
            for (int i = 0; i < nombres.length; i++) {
                s.executeUpdate("INSERT INTO contacto (nombre, apellidos, telefono)
                     VALUES ('" + nombres[i] + "','" + apellidos[i] + "','" + telefonos[i] + "' )");
            }

            // Se realiza una consulta sobre la tabla contacto.
            ResultSet rs = s.executeQuery("select * from contacto");

            // Se recorre el ResultSet, mostrando por pantalla los resultados.
            while (rs.next()) {
                System.out.println(rs.getInt(1) + " " + rs.getString(2) + " " +
                                            rs.getString(3) + " " + rs.getString(4));
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } catch (ClassNotFoundException e) {
            System.out.println(e.getMessage());
        } finally { // Se cierra la conexión con la base de datos.
            try {
                if (conexion != null) {
                    conexion.close();
                }
            } catch (SQLException ex) {
                System.out.println(ex.getMessage());
            }
        }
    }
}



2. Resumen.

Qué es JDBC?
JDBC es usado para enviar comandos SQL hacia una base de datos relacional, que puede ser Oracle, Infomix, SyBase, etc.

Qué hace JDBC?
Establece una conexión con una BD
Envía sentencias SQL
Procesa los resultados
Connection con = DriverManager.getConnection ( "jdbc:odbc:wombat", "login", "password");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");
while (rs.next()) { int x = rs.getInt("a"); String s = rs.getString("b"); float f = rs.getFloat("c"); }
JDBC es una API de bajo nivel para API´s de alto nivel
Una integración de SQL hacia Java, es decir que las sentencias SQL se puedan mezclar con Java, por ejemplo, que una variable de Java pueda ser usada en una sentencia SQL para recibir o dar valores.
Un mapeo directo de las tablas de la BD hacia las clases de Java, donde cala fila de la tabla se convierte en una instancia de la clase, y donde cada columna se corresponde a un atrubuto de esa instancia.
JDBC v/s ODBC y otras API´s

ODBC no es apropiado para usar directamente con Java por que usa una interfaz en C.
Una traducción literal de la API ODBC en C, no es deseable. Por ejemplo Java no tiene punteros y la ODBC hace gran uso de ellos.
ODBC es muy difícil de aprender , hace una mezcla de acciones simples y avanzadas.
Una API como JDBC es necesario para poder desarrollar una solución“puramente de Java”



Modelos de dos capas y tres capas.

Conformación de SQL.

El SQL es el idioma normal por acceder las bases de datos correlativas. Una dificultad es que aunque la mayoría del DBMSs (los Sistemas de Dirección de Base de datos) use un formulario normal de SQL para la funcionalidad básica, ellos no conforman la sintaxis de SQL normal más recientemente definida para la funcionalidad más avanzada. Por ejemplo no todas las BD soportar procedimientos almacenados.
Una manera que el API de JDBC trata de este problema es permitir cualquier sentencia sea pasada a un driver de DBMS subyacente.
Para las aplicaciones complejas, JDBC trata la conformación de SQL de otra manera. Proporciona la información descriptiva sobre el DBMS por medio del DatabaseMetaData para que las aplicaciones puedan adaptar a los requisitos y capacidades de cada DBMS.



El Armazón de JDBC.

El puente de JDBC-ODBC les permite a los drivers de ODBC ser usado como drivers de JDBC. Y a largo plazo proporcionará una manera de acceder alguno del DBMSs menos popular si no se crean los drivers de JDBC para ellos.




Uso de las clases Class, Connection, DriverManager.

JDBC (Java DataBase Connectivity) es la API que permite la conexión de un programa Java y una base de datos relacional.
Se encuentra dentro del paquete java.sql.



3.SUMMARY.

What is JDBC ?
JDBC is used to send commands to a SQL relational database , which can be Oracle , Informix , Sybase , etc.

What makes JDBC ?
It establishes a connection with a BD
Send SQL statements
Processes the results
Connection con = DriverManager.getConnection ( "jdbc : odbc : wombat " , " login" , "password" ) ;
Statement stmt = con.createStatement ();
ResultSet rs = stmt.executeQuery ( "SELECT a, b, c FROM Table1" ) ;
while ( rs.next ()) { int x = rs.getInt ( "a" ) ; String s = rs.getString ( "b") ; rs.getFloat float f = ( " c " ) ; }


JDBC is a low-level API for high-level APIs
Integration of SQL to Java , meaning that SQL statements can be mixed with Java, for example, a 
Java variable can be used in an SQL statement to receive or give values.
A direct mapping of the database tables to Java classes , where cove row of
 the table becomes an instance of the class, where each column corresponds to a atrubuto of that instance.
 
JDBC v / s ODBC and other APIs
 
ODBC is not suitable for use directly by using a Java interface C.
A literal translation of the ODBC API in C , is not desirable. For example Java has no pointers , 
and ODBC makes great use of them . ODBC is hard to learn, makes a mixture of simple and advanced actions.
An API like JDBC is needed to develop a solution " pure Java"
 
 
Conformation of SQL .
 
SQL is the standard language for accessing data bases correlative . One difficulty is that although most DBMSs 
( Systems Management Database ) use a standard form of SQL for basic functionality , they do not make 
normal SQL syntax most recently defined for more  advanced functionality . For example not all BD support stored procedures.
One way the JDBC API deals with this problem is to allow any sentence be passed to an underlying DBMS driver .
For complex applications , JDBC SQL shaping is otherwise. It provides descriptive information about the DBMS
 by the DatabaseMetaData so that applications can adapt to the requirements and capabilities of each DBMS.
 
 
Using Class, Connection, DriverManager class .
 
JDBC (Java DataBase Connectivity) is the API that allows connection of a Java program and a relational database .
It is in the java.sql package.



 
4.Recomendaciones.
 
EL diseño de las nuevas aplicaciones conduce a la minimización del ingreso de datos por parte del usuario, 
además El lenguaje que se desarrolla esta orientado a facilitar la ejecución en cualquier sistema operativo, 
ya que se ajusta estándares reconocidos, que permite la flexibilidad de los cambios.   
 
Para que exista un enlace remoto con la base de datos ,
la aplicacion no debe de conectarse directamente a la base de datos ,
sino que mediante los  drivers JDBC –ODBC. 

5.Conclusiones.
 
 
Los drivers JDBC y ODBC establecen la estructura para el diso 
y generación de conexiones y accesos a Base de Datos remotas; 
por lo que facilita el desarrollo de nuevas aplicaciones.JDBC ofrece
 una interfaz estándar para accesar multiples bases de esto permitirá
 que puedas conextarte sin ningún problema a cualquie  base de datos.    



6.Apreciacion del equipo. 

 la conexión a una base de datos nos permite aprender 
el entorno del elemento JDBC y conocer nuevas formas de acceder a una base de datos. 




7.Glosario de términos.


JDBC . Es una interfase de acceso a bases de datos estándar 
SQL que proporciona un acceso uniforme a una gran variedad de bases de datos relacionales.


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 debases  de datos (DBMS) almacene los datos.



API. es un conjunto de funciones y procedimientos que
 cumplen una o muchas funciones con el fin de 
ser utilizadas por otro software. Las siglas API vienen del inglés 
Application Programming Interface. En español sería Interfaz de Programación de
 Aplicaciones.



















8. BIBLIOGRAFIA O LINKOGRAFIA.


 PARA MAYOR INFORMACION AKI ...LA DIAPOSITIVA..