domingo, 25 de septiembre de 2016

JAVA CON BASE DE DATOS



DESARROLLO DE SOFTWARE I




1 1.   JAVA CON BASE DE DATOS

1 1.1  DEFINICIÓN

El driver JDBC (Java DataBase Connectivity) es el más básico de que dispone Java para acceder a la base de datos, las bases de datos que deseemos conectar deberán proveerse el driver JDBC en un empaquetado JAR para añadirlo a las librerías del proyecto.
La API JDBC es una parte integral de la plataforma Java, por lo tanto no es necesario descargar ningún paquete adicional para usarla.
JDBC provee una interfaz única, que independiza a las aplicaciones del motor de la base de datos.
Conectar tus aplicaciones Java a un servidor de bases de datos es imprescindible para la funcionalidad de una solución de Software. Al igual que Sql server y C#, Mysql y Java necesitan de una interfaz que proporcione las clases necesarias para gestionar una conexión.

1 1.2  OBJETOS CONNECTION, STATEMENT Y RESULTSET

   Ø Connection
La clase connection proporciona un interfaz eficiente para el acceso a datos y metadatos de una base de datos. Conocer los recursos de gambas para acceso a base de datos es fundamental a la hora de obtener un código transparente al motor de base de datos que utilice la aplicación. 
Crear conexión     
Las propiedades fundamentales para crear una conexión son:     
Name 
Es el nombre de la base de datos que queremos abrir. Si no se especifica se creará una base de datos EN MEMORIA.         
En Mysql si deseamos crear usuarios, cambiar privilegios, que afecten al gestor de base de datos deberemos acceder a la base de datos "mysql".         
Host 
Es la ubicación del servidor de base de datos. En muchas ocasiones será "localhost", pero puede ser también un nombre o una dirección IP. 
Login y Password  
Usuario y clave que definan al usuario que intenta crear la base. 
Type 
Indica el tipo de base de datos al que queremos acceder (mysql, sqlite,etc). 
Port 
El puerto por el que accederemos a la base de datos. En el caso de mysql el puerto por defecto es 3306. 


A continuación se presenta un ejemplo de la clase con su correspondiente método:


package ar.com.et3.lab8.ejercicio1.administrador;
import java.sql.Connection;
import java.sql.DriverManager;
/**
* @author Window8
 */
public abstract class AdministradorDeConexiones {  
    public AdministradorDeConexiones() {
    }
    public static Connection getConnection() throws Exception
    {
        // Establece el nombre del driver a utilizar
        String dbDriver = "com.mysql.jdbc.Driver";      
        // Establece la conexion a utilizar contra la base de datos
        String dbConnString = "jdbc:mysql://localhost/6to_ET3";      
        // Establece el usuario de la base de datos
        String dbUser = "root";      
        // Establece la contraseña de la base de datos
        String dbPassword = "";      
        // Establece el driver de conexión
        Class.forName(dbDriver).newInstance();      
        // Retorna la conexión
        return DriverManager.getConnection(dbConnString, dbUser, dbPassword);

    }     }


   Ø  Statement
Creada por el método createStatement().
Un objeto Statement se usa para enviar sentencias SQL simples.
La interfaz Statement nos suministra tres métodos diferentes para ejecutar sentencias SQL, executeQuery, executeUpdate y execute. El método a usar está determinado por el producto de la sentencia SQL.
. El método executeQuery está diseñado para sentencias que producen como resultado un único ResultSet tal como las sentencias SELECT.
 . El método executeUpdate se usa para ejecutar sentencias INSERT, UPDATE y DELETE así como sentencias SQL DDL (Data Definition Language) como CREATE TABLE o DROP TABLE.
El efecto de una sentencia INSERT, UPDATE y DELETE es una modificación de una o más columnas en cero o más filas de una tabla. El valor devuelto de executeUpdate es un entero que indica el número de filas que han sido afectadas (referidos como update count).
Para sentencias tales como CREATE TABLE o DROP TABLE, que no operan sobre filas, el valor devuelto por executeUpdate es siempre cero.

. El método execute se usa solamente para ejecutar sentencias que devuelven más de un Resultset, más que un update count o una combinación de ambos.

         // Define la conexión
        Connection laConexion = AdministradorDeConexiones.getConnection();      
        // Arma la consulta y la ejecuta
        String laConsulta = "SELECT * FROM alumnos";
        Statement stmtConsulta = laConexion.createStatement();
        ResultSet rs = stmtConsulta.executeQuery(laConsulta);      
        // Muestra los datos
        while( rs.next() )
   System.out.println( "ID: " + rs.getInt("alu_id") + " -- " + "Nombre: " +            rs.getString("alu_nombre") + " -- " + "Apellido: " + rs.getString("alu_apellido") );      
        // Cierra el Statement y la Connection
        stmtConsulta.close();
       laConexion.close();

        

   Ø  ResultSet

Es la representación en memoria de las tablas de la base de datos en disco, se puede entender como una tabla virtual, recordar que generalmente todos los procesos que se realicen con la tabla (insertar registros, eliminar registros, etc.) se realizarán realmente contra un ResultSet y no provocarán ningún cambio en la tabla física en disco, ResultSet tiene un conjunto de métodos muy útiles y muy usados para el proceso de los renglones de la tabla virtual.


// Declarando y creando objetos globales
Connection canal = null;
ResultSet tabla= null;
Statement instruccion=null;
String strcon = "jdbc:mysql://localhost/mibase?user=lauro&password=laurosoto";
// Abriendo canal o enlace en su propio try-catch
Try {
Class.forName ("com.mysql.jdbc.Driver").newInstance ( );
Canal=DriverManager.getConnection (strcon);
instruccion = canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
} catch (java.lang.ClassNotFoundException e) { } catch (SQLException e) {};





   1.3 EJEMPLO

Import java.sql.*;
/**
ResultSetExample.java
**/
public class ResultSetExample {
public static void main(java.lang.String[] args)                       
{
if (args.length != 2) {
System.out.println("Uso:  java ResultSetExample <biblioteca> <tabla>");
System.out.println(" siendo <biblioteca> la biblioteca que contiene la <tabla>");
System.exit(0);}
Connection con = null;
Statement s = null;
 ResultSet rs = null;
ResultSetMetaData rsmd = null;
try {
// Obtener una conexión a base de datos y preparar una sentencia.
Class.forName("com.ibm.db2.jdbc.app.DB2Driver");
con = DriverManager.getConnection("jdbc:db2:*local");
s = con.createStatement();
rs = s.executeQuery("SELECT * FROM " + args[0] + "." + args[1]);
rsmd = rs.getMetaData();
int colCount = rsmd.getColumnCount();
int rowCount = 0;
while (rs.next()) {
rowCount++;
System.out.println("Datos para la fila " + rowCount);
for (int i = 1; i <= colCount; i++)
System.out.println("   Fila " + i + ": " + rs.getString(i));
}
} catch (Exception e) {
// Manejar los errores.
System.out.println("Tenemos un error... ");
e.printStackTrace();
} finally {
 // Asegurarse de limpiar siempre.  Si la conexión se cierra, la sentencia que hay debajo de ella también se cerrará.
if (con != null) {
try {
con.close();
} catch (SQLException e) {
System.out.println("Error grave: no se puede cerrar el objeto conexión");
     }
    }
  }
 }

}


   2.   RESUMEN
JDBC es el acrónimo de Java Database Connectivity, 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 lenguaje SQL del móldelo de base de datos que se utilice. 
Está conformada por diversas clases e interfaces ubicadas en el paquete java.sql.
Una base de datos es un “almacén” que nos permite guardar grandes cantidades de información de forma organizada para que luego podamos encontrar y utilizar fácilmente.
Cada base de datos se compone de una o más tablas que guarda un conjunto de datos. Cada tabla tiene una o más columnas y filas. Las columnas guardan una parte de la información sobre cada elemento que queramos guardar en la tabla, cada fila de la tabla conforma un registro.
Entre los diferentes tipos de base de datos, podemos encontrar los siguientes:

  • MySql: es una base de datos con licencia GPL basada en un servidor. Se caracteriza por su rapidez. No es recomendable usar para grandes volúmenes de datos.
  • PostgreSql y Oracle: Son sistemas de base de datos poderosos. Administra muy bien grandes cantidades de datos, y suelen ser utilizadas en intranets y sistemas de gran calibre.
  • Access: Es una base de datos desarrollada por Microsoft. Esta base de datos, debe ser creada bajo el programa access, el cual crea un archivo .mdb con la estructura ya explicada.
  • Microsoft SQL Server: es una base de datos más potente que access desarrollada por Microsoft. Se utiliza para manejar grandes volúmenes de informaciones.

   3.   SUMMARY
JDBC stands for Java Database Connectivity, an API that allows the execution of operations on databases from the programming language JAVA, regardless of operating system you are running or the database which is accessed using the SQL language the móldelo database used.
It consists of various classes and interfaces located in the java.sql package.
A database is a "store" that allows us to store large amounts of information in an organized way so that we can then easily find and use.
Each database consists of one or more tables that stores a data set. Each table has one or more columns and rows. The columns bear a part of the information about each item you want to save in the table, each row of the table forms a record.
Among the different types of database, we can find the following:
• MySql: database is a GPL licensed based on a server. It is characterized by its speed. It is not recommended to use for large data volumes.
• PostgreSQL and Oracle database systems are powerful data. It manages fine large amounts of data, and are often used in intranets and large caliber systems.
Access: A database developed by Microsoft. This database must be created under the access program, which creates an .mdb file with the already explained structure.
Microsoft SQL Server: is a more powerful database access developed by Microsoft. It is used to handle large volumes of information.

   4.   RECOMENDACIONES
Los sistemas de bases de datos libres o gratuitos recomendados para su uso son:














Otras bases de datos que se requieren pagar para poder utilizarlas son:



















Se recomienda que a la hora de aprender a programar con bases de datos, una buena opción es aprender con Oracle y su lenguaje SQL, ya que Oracle facilita versiones de prueba (académicas o de estudio) gratuitas que pueden servir para aprender y es que una vez que hayamos aprendido con Oracle la adaptación a cualquier otra base de datos es relativamente sencilla.

Finalmente, indicar que antes de aprender programación con bases de datos, es conveniente conocer los fundamentos de programación (algoritmia) así como uno o varios lenguajes de programación.

   5.   CONCLUSIONES
Al finalizar este trabajo de investigación podemos concluir que:
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 bases de datos muy útil desde que fue creado, y con el tiempo, nuevas funciones se le añadieron, expandiéndose 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.
SQL significó un gran avance para este fin, almacenar y clasificar información, además de que gracias a su aparición, hoy en día existe una gran variedad de SGBD basados en el lenguaje SQL, como MySQL, PostgreSQL, Oracle, entre otros. Desde su estandarización, casi todos los programas que trabajan con bases de datos, utilizan este lenguaje, con diferentes variaciones y funciones, según el tipo de software y su objetivo.



   6.   APRECIACIONES DEL EQUIPO

Durante la realización de este trabajo, aprendimos acerca del, lenguaje SQL, de los sistemas de gestión de bases de datos, y su importancia y utilidad a la hora de almacenar, clasificar y manejar información, de cualquier tipo.


   7.   GLOSARIO DE TÉRMINOS
API: Una API nos permite implementar las funciones y procedimientos que engloba en nuestro proyecto sin la necesidad de programarlas de nuevo. En términos de programación, es una capa de abstracción.

GLP: Es la licencia más ampliamente usada en el mundo del software y garantiza a los usuarios finales (personas, organizaciones, compañías) la libertad de usar, estudiar, compartir (copiar) y modificar el software.

Cliente/Servidor: Modelo de aplicación en la que un equipo actúa como servidor y procesa las peticiones que llegan de los clientes. En SQL el ordenador en el que se ejecuta la aplicación es el servidor y los ordenadores con las aplicaciones que usan las bases de datos son los clientes. (Aunque también es posible que ambos estén en un mismo computador).

DBO: Siglas de Database Owner, se refiere al propietario de una base de datos, al usuario que la creó.

DDL: Data Definition Language, dentro del SQL es un vocabulario usado para crear y modificar la estructura de las tablas, ejemplos: CREATE, ALTER o DROP.

DML: Data Manipulation Language, igualmente dentro del SQL es un vocabulario usado para gestionar los datos, ejemplos: SELECT, INSERT, UPDATE.

HTML: Siglas de Hypertext Markup Language, lenguaje usado para realizar páginas web.

NULL: Valor que se muestra ante un valor desconocido en una base de datos.

SQL: Structured Query Language, lenguaje informático para el tratamiento de base de datos.


 XML: eXtensible Markup Language, lenguaje informático usado para almacenar datos, soporta acceso a base de datos. (Término relacionado XBRL).



   8.   LINKOGRAFÍA



















viernes, 16 de septiembre de 2016

JDBC





DESARROLLO DE SOFTWARE I
I.             TEMA : JDBC
1.    Contenido

Ø  Capa de Acceso de datos, creación

La mayoría de los proyectos actuales necesitan guardar o consultar datos de una base de datos relacional, de esta manera se puede persistir la información de sus usuarios y del negocio que implementan pudiendo acceder a ella en cualquier momento.
Para conectarse a las BD las aplicaciones utilizan por lo general drivers, que no son más que componente que permiten realizar una conexión amigable con la base de datos de un tipo específico. Algunos de estos tipos pueden ser MSSQL, MySQL, Oracle, PostgreSQL, etc.
Otro elemento importante a tener en cuenta es que para realizar operaciones sobre los datos se necesita de un lenguaje de consultas que permita a los desarrolladores trabajar con las bases de datos, y en este punto contamos con SQL.

Aquellos desarrolladores con poca formación o que desconozcan los patrones de diseño existentes puede ser que comentan el error de mezclar el código de la aplicación que desarrolla con el código del acceso a los datos y esto puede traer muchos problemas a corto, mediano y largo plazo. Es por esta razón que se han propuesto arquitecturas y patrones de diseño que especifican cual debe ser la forma de diseñar una aplicación y como una aplicación debe acceder a sus datos. Esto se muestra en  las siguientes dos imágenes a manera de ejemplo.






JAVA como lenguaje primero hizo uso de JDBC para el acceso a las BD. Con esta tecnología se puede:
  1. Establecer una conexión con la BD, especificando un driver y los parámetros para autenticarse en la BD.
  2. Usar la conexión establecida para realizar operaciones sobre la BD (seleccionar datos, insertar, modificar, eliminar, etc.).
  3. Procesar los resultados devueltos por las operaciones anteriores

Ø  Creación de JDBC

JDBC existe desde 1996, y fue incluido desde la versión 1.1 de Java Development Kit por JavaSoft, aunque también se hizo disponible para usarse con JDK 1.02. El problema de usar JDBC con el JDK 1.02 es que los usuarios comunes tenían que agregar a su máquina virtual de Java las clases que implementan JDBC, lo cual era muy engorroso y difícil. Es por esto que desde la versión de JDK 1.1, JDBC viene incluido como el paquete java.sql.
Java en un principio era visto como un lenguaje para poner animaciones en Internet, la información que presentaba no era persistente, así que no era apto para aplicaciones de negocios o industriales, que requerían la capacidad de acceder a información almacenada en Sistemas Gestionadores de Bases de Datos (DBMS).
 Era además necesario crear una forma sencilla de acceder a bases de datos usando Java, pues de otra manera se dejaría al desarrollador con la tarea de implementar llamadas de bajo nivel al DBMS.
En ese entonces Java era un lenguaje que prometía independencia de plataformas, lo cual lo hacía un ambiente muy atractivo para crear todo tipo de aplicaciones, y el acceso a Base de Datos se convertía cada vez más en una necesidad que un lujo.
 La gente en JavaSoft se preguntó cómo atraer a los programadores y a las empresas a invertir su dinero y su tiempo en JDBC. Es por esto que decidieron crear ventajas competitivas en su producto, mejorando cada vez más la interface de JDBC para que:
1. Los programadores pudieran sentirse como si usaran solamente Java, permitiéndoles una forma sencilla de uso del DBMS.
2. Los programadores se sintieran en contacto directo con el DBMS y no con un socket o un proceso en cualquier máquina.
 3. La comunicación con la base de datos fuera fácil de programar. Esto es, que las empresas que quisieran hacer controladores JDBC para comunicarse con sus productos lo pudieran hacer en forma sencilla.
4. Fuese flexible, para aceptar configuraciones diferentes de conectividad. Ósea, que la misma aplicación del desarrollador pudiese acceder a varios DBMS a la vez, tal vez hasta en varios hilos simultáneos.

Ø  Configuración de conexión BD con NetBeans

NetBeans es una plataforma para el desarrollo de aplicaciones de escritorio usando Java y a un Entorno integrado de desarrollo (IDE) desarrollado usando la Plataforma NetBeans.

Si eres un programador y desarrollas tus aplicaciones en Java seguramente necesitarás conectar una base de datos tipo MySQL a este entorno algún día, bueno, si lo necesitas ahora, he aquí una explicación paso a paso de cómo conectar ambas herramientas.
*   Primero que nada necesitas tener un servidor MySQL instalado en tu equipo o en su defecto en la máquina que actuará como servidor de bases de datos. Recuerda que MySQL es gratuito y puedes obtenerlo desde aquí.El proceso de instalación es algo en lo que no entraré en detalle, para cualquier duda puedes consultar la documentación oficial que se encuentra en su sitio web.
*   Asimismo, debes de tener el NetBeans instalado, de preferencia su última versión estable (al momento de esta publicación es la 5.5.1) que viene con el Java Development Kit (JDK) 1.6, lo anterior puedes obtenerlo desde aquí.
  • Una vez que tengas ambas herramientas instaladas necesitaras el driver o conector a la base de datos de MySQL que puedes obtener desde aquí.
Copiar lo necesario         

Una vez que tengas el NetBeans y el MySQL Server instalado lo que vas a necesitar es copiar el driver que descargaste, en mi caso el mysql-connector-java-3.1.11-bin.jar dentro de la carpeta del JDK, en mi caso es la siguiente ruta:

C:\Archivos de programa\Java\jdk1.6.0_01\jre\lib\ext       



*NOTA: Debes tener el conector dentro de la carpeta anterior antes de ejecutar el NetBeans, en caso de que esté abierto ciérralo y vuélvelo a abrir.












Ya que lo hayas copiado ahora sí abre el NetBeans y espera a que cargue.

Configurar NetBeans:     

Una vez que hayas abierto el NetBeans localiza la sección de Runtime o Tiempo de ejecución que se localiza en el lado izquierdo de la pantalla, como se muestra a continuación:




Al expandir la sección de Databases Bases de datos debe de aparecer el MySQL (Connector/J driver), en caso contrario debes de agregarlo manualmente como se describe a continuación:

1. Da un clic derecho sobre Drivers y selecciona New Driver.





1.    
.         2.En la ventana que aparece da clic en el botón de Add Agregar y busca el archivo .jar que descargaste anteriormente, el mismo que copiaste dentro de la carpeta del JDK.   
      
      3. Una vez hecho lo anterior da clic en el botón de Ok Aceptar.
Cuando realices los pasos anteriores debe de aparecer un elemento nuevo en la sección de Drivers dentro de Databases de nombre MySQL (Connector/J driver).


Ø  Definición de JDBC. Tipos. Aplicaciones

¿Qué es JDBC?
JDBC es usado para enviar comandos SQL hacia una base de datos relacional, que puede ser Oracle, Infomix, SyBase, etc.
JDBC es el API para la ejecución de sentencias SQL. (Como punto de interés JDBC es una marca registrada y no un acrónimo, no obstante a menudo es conocido como “Java Database Connectivity”). Consiste en un conjunto de clases e interfaces escritas en el lenguaje de programación Java. JDBC suministra un API estándar para los desarrolladores y hace posible escribir aplicaciones de base de datos usando un API puro Java.
Usando JDBC es fácil enviar sentencias SQL virtualmente a cualquier sistema de base de datos. En otras palabras, con el API JDBC, no es necesario escribir un programa que acceda a una base de datos Sybase, otro para acceder a Oracle y otro para acceder a Informix. Un único programa escrito usando el API JDBC y el programa será capaz de enviar sentencias SQL a la base de datos apropiada. Y, con una aplicación escrita en el lenguaje de programación Java, tampoco es necesario escribir diferentes aplicaciones para ejecutar en diferentes plataformas. La combinación de Java y JDBC permite al programador escribir una sola vez y ejecutarlo en cualquier entorno.
Java, siendo robusto, seguro, fácil de usar, fácil de entender, y descargable automáticamente desde la red, es un lenguaje base excelente para aplicaciones de base de datos.
JDBC expande las posibilidades de Java. Por ejemplo, con Java y JDBC API, es posible publicar una página web que contenga un applet que usa información obtenida de una base de datos remota. O una empresa puede usar JDBC para conectar a todos sus empleados (incluso si usan un conglomerado de máquinas Windows, Macintosh y UNIX) a una base de datos interna vía intranet. Con cada vez más y más programadores desarrollando en lenguaje Java, la necesidad de acceso fácil a base de datos desde Java continúa creciendo.

Tipos de drivers
Un driver JDBC puede pertenecer a una de cuatro categorías diferentes en cuanto a la forma de operar.

Puente JDBC-ODBC
 La primera categoría de drivers es la utilizada por Sun inicialmente para popularizar JDBC y consiste en aprovechar todo lo existente, estableciendo un puente entre JDBC y ODBC. Este driver convierte todas las llamadas JDBC a llamadas ODBC y realiza la conversión correspondiente de los resultados. 




La ventaja de este driver, que se proporciona con el JDK, es que Java dispone de acceso inmediato a todas las fuentes posibles de bases de datos y no hay que hacer ninguna configuración adicional aparte de la ya existente. No obstante, tiene dos desventajas muy importantes; por un lado, la mayoría de los drivers ODBC a su vez convierten sus llamadas a llamadas a una librería nativa del fabricante DBMS, con lo cual la lentitud del driver JDBC-ODBC puede ser exasperante, al llevar dos capas adicionales que no añaden funcionalidad alguna; y por otra parte, el puente JDBC-ODBC requiere una instalación ODBC ya existente y configurada.

Java/Binario
 Este driver se salta la capa ODBC y habla directamente con la librería nativa del fabricante del sistema DBMS (como pudiera ser DB-Library para Microsoft SQL Server o CT-Lib para Sybase SQL Server). Este driver es un driver 100% Java pero aun así necesita la existencia de un código binario (la librería DBMS) en la máquina del cliente, con las limitaciones y problemas que esto implica





100% Java/Protocolo nativo
 Es un driver realizado completamente en Java que se comunica con el servidor DBMS utilizando el protocolo de red nativo del servidor. De esta forma, el driver no necesita intermediarios para hablar con el servidor y convierte todas las peticiones JDBC en peticiones de red contra el servidor. La ventaja de este tipo de driver es que es una solución 100% Java y, por lo tanto, independiente de la máquina en la que se va a ejecutar el programa. 





Igualmente, dependiendo de la forma en que esté programado el driver, puede no necesitar ninguna clase de configuración por parte del usuario.
La única desventaja de este tipo de drivers es que el cliente está ligado a un servidor DBMS concreto, ya que el protocolo de red que utiliza MS SQL Server por ejemplo no tiene nada que ver con el utilizado por DB2, PostGres u Oracle. La mayoría de los 12 fabricantes de bases de datos han incorporado a sus propios drivers JDBC del segundo o tercer tipo, con la ventaja de que no suponen un coste adicional.

100% Java/Protocolo independiente




Esta es la opción más flexible, se trata de un driver 100% Java / Protocolo independiente, que requiere la presencia de un intermediario en el servidor. En este caso, el driver JDBC hace las peticiones de datos al intermediario en un protocolo de red independiente del servidor DBMS. El intermediario a su vez, que está ubicado en el lado del servidor, convierte las peticiones JDBC en peticiones nativas del sistema DBMS. La ventaja de este método es inmediata: el programa que se ejecuta en el cliente, y aparte de las ventajas de los drivers 100% Java, también presenta la independencia respecto al sistema de bases de datos que se encuentra en el servidor.

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.






Ø  Uso de JDBC en aplicaciones Java

Uso de controladores de las BD

*      Clase DriverManager
• Permite establecer y gestionar conexiones a las BD
*      Clase SQL Permission
• Proporciona los permisos para poder usar el DriverManager a código en ejecución dentro de un Security Manager (por ejemplo applets)
*      Interfaz Driver
• Métodos para registrar y conectar controladores basados en tecnología JDBC
*      Clase DriverPropertyInfo
• Propiedades de un controlador

Interfaz con la aplicación
*      Envío de instrucciones SQL a la BD
• Connection
Métodos para crear instrucciones y para gestionar conexiones y sus propiedades
• Statement
Permite enviar instrucciones a la BD
• PreparedStatement
 Permite usar instrucciones preparadas o SQL básicas
• CallableStatement
 Llamada a procedimientos almacenados en la BD
• Savepoint
 Puntos de recuperación en una transacción
*      Recuperación de los resultados de la consulta a la BD
• ResultSet
 Conjunto de resultados que se devuelven de una query
• ResultSetMetaData
Información sobre las columnas del objeto ResultSet

Interfaz con la aplicación
*      Correspondencia de tipos SQL con clases e interfaces de Java
• Array SQL ARRAY
• Blob SQL BLOB
• Clob SQL CLOB
• Date SQL DATE
• NClob SQL NCLOB
• Ref SQL REF
• RowId SQL ROWID
• Struct SQL STRUCT
• SQLXML SQL XML
• Time SQL TIME
• Timestamp  SQL TIMESTAMP
• Clase Types
  constantes para tipos SQL
 *      Correspondencia de tipos SQL definidos por el usuario a Java
• SQLData
• SQLInput
• SQLOutput

Secuencia normal

*      Establecer la conexión con la BD
Cargar controladores (si se usa una versión de Java inferior a la 6).
Establecer la conexión

 *      Crear un objeto Statement para hacer petición a la BD
Asociar una sentencia SQL al objeto Statement
Proporcionar valores de los parámetros
 Ejecutar el objeto Statement

 *      Procesar los resultados

*      Liberar recursos (cerrar la conexión)

Si es necesario, se pueden ejecutar varias instrucciones dentro de una transacción (propiedades ACID)

     *      Abrir transacción
 Crear y ejecutar instrucciones
Procesar resultados

     *      Cerrar transacción

Registrar un controlador
     *      Los controladores se identifican con un URL JDBC de la forma
jdbc:subprotocolo:localizadorBD

      *      La conexión a la BD se hace con el método getConnection()





Ø  Ejemplo

Ejemplo: Conexión a una base de datos MySQL y consulta de una tabla.

import java.sql.*;
public class EjemploAccesoBD1 {
    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.
            // En este caso nos conectamos a la base de datos prueba
            // con el usuario root y contraseña 1 daw
  conexion = DriverManager.getConnection("jdbc:mysql://localhost/prueba", "root", "1 daw");

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

            // Se realiza la consulta. Los resultados se guardan en el ResultSet rs
            ResultSet rs = s.executeQuery("select * from persona");

            // Se recorre el ResultSet, mostrando por pantalla los resultados.
            while (rs.next()) {
                System.out.println(rs.getInt("Id") + " " + rs.getString(2) + " " + rs.getDate(3));
            }
        } 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

Java Database Connectivity (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. JDBC también proporciona una base común para la construcción de herramientas y utilidades de alto nivel.
Simplemente JDBC hace posible estas tres cosas:
·         Establece una conexión con la base de datos.
·         Envía sentencias SQL
·          Procesa los resultados.
JDBC es un API (Application programming interface) que describe o define una librería estándar para acceso a fuentes de datos, principalmente orientado a Bases de Datos relacionales que usan SQL (Structured Query Language).
JDBC no sólo provee un interfaz para acceso a motores de bases de datos, sino que también define una arquitectura estándar, para que los fabricantes puedan crear los drivers que permitan a las aplicaciones javas el acceso a los datos.

La necesidad de JDBC, a pesar de la existencia de ODBC, viene dada porque ODBC es un interfaz escrito en lenguaje C, que al no ser un lenguaje portable, haría que las aplicaciones Java también perdiesen la portabilidad. Y además, ODBC tiene el inconveniente de que se ha de instalar manualmente en cada máquina; al contrario que los drivers JDBC, que al estar escritos en Java son automáticamente instalables, portables y seguros.





Toda la conectividad de bases de datos de Java se basa en sentencias SQL, por lo que se hace imprescindible un conocimiento adecuado de SQL para realizar cualquier clase de operación de bases de datos. Aunque, afortunadamente, casi todos los entornos de desarrollo Java ofrecen componentes visuales que proporcionan una funcionalidad suficientemente potente sin necesidad de que sea necesario utilizar SQL, aunque para usar directamente el JDK se haga imprescindible. La especificación JDBC requiere que cualquier driver JDBC sea compatible con al menos el nivel «de entrada» de ANSI SQL 92 (ANSI SQL 92 Entry Level).

3.    Summary

Java Database Connectivity (JDBC) is an interface for accessing SQL standard databases providing a uniform to a variety of relational database access. JDBC also provides a common basis for building tools and utilities high level.
JDBC just do these three things possible:
• Establishes a connection to the database.
• Send SQL statements
• Process the results.
JDBC is an API (application programming interface) that describes or defines a standard library for accessing data sources, primarily oriented relational databases using SQL (Structured Query Language).
JDBC not only provides an interface to access database engines, but also defines a standard architecture, so that manufacturers can create drivers that allow applications javas access to data.
The need for JDBC, despite the existence of ODBC is given because ODBC is an interface written in C language, not being a portable language, Java applications would also perdiesen portability. And, ODBC has the disadvantage that it has to manually install on each machine; unlike JDBC drivers, that being written in Java they are automatically installable, portable and safe.






All connectivity database is based on Java SQL statements, so it is essential to a proper understanding of SQL to perform any kind of operation databases. Although fortunately almost all Java development environments provide visual components that provide a sufficiently powerful functionality without the need to use SQL, but to use directly the JDK becomes essential. The JDBC specification requires that any JDBC driver supports at least level "input" of ANSI SQL 92 (ANSI SQL 92 Entry Level).


4.    Recomendaciones

ü       Elija controlador JDBC adecuado para su aplicación

Hay 4 Typs de controlador JDBC en Java y puede afectar directamente al rendimiento de la capa DAO. utilizar siempre último controlador JDBC si está disponible y prefieren Tipo 4 JDBC nativos .

ü    Conexión a la Base de Datos
Para que exista un enlace remoto con la Base de Datos, la aplicación no debe de conectarse directamente a la Base de Datos, sino que mediante los drivers JDBC - ODBC

Utilizar procedimientos almacenados
El uso de procedimientos almacenados está permitido 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. No cree procedimientos almacenados para cada sentencia SQL individual que ejecute en el programa. No obstante, cuando sea posible, cree un procedimiento almacenado que ejecute un grupo de sentencias SQL.

5.    Conclusiones

El  avance de la tecnología hizo surgir estándares que permiten crear soluciones multibases de datos así como la conexión a múltiples bases de datos como el JDBC y lenguajes capaces de crear aplicaciones que se ejecuten en cualquier plataforma como JAVA las cuales aunque consumen un tiempo considerable ofrecen soluciones.
En esta página toda la información  de JDBC contiene las ideas más importantes de manera general con una investigación hecha a fondo para que pueda facilitar el trabajo de los lectores.

6.    Apreciaciones de Equipo

Este paquete permite conectarse a una base de datos, consultarla o actualizarla usando SQL. Su manejo es de importancia debido a la frecuencia con que las bases de datos son usadas hoy.
Así como con con Java se logra independencia de la plataforma, al trabajar con JDBC se logra además independencia del proveedor de la base de datos.
Una dificultad enfrentada por los desarrolladores de JDBC fue que existen muchos proveedores de bases de datos cada uno usando su propio protocolo. Es así como se acordó el desarrollo de una API Java para SQL, la cual accede la base de datos vía un administrador de drivers de terceros los cuales se conectan a bases de datos específicas.  Cada proveedor de bases de datos debía generar su propio driver conectable al administrador de drivers.


7.    Glosario de Términos

ü      BASE DE DATOS

Una base de datos es una colección de información organizada de forma que un programa de ordenador pueda seleccionar rápidamente los fragmentos de datos que necesite. Una base de datos es un sistema de archivos electrónico.
     ODBC
Open Database Connectivity (ODBC) es una interfaz de aplicaciones (API) para acceder a datos en sistemas gestores de bases de datos tanto relacionales como no relacionales, utilizando para ello SQL (Lenguaje de Consulta Estructurado). Todas las aplicaciones que soporten ODBC reconocerán una instrucción común de Lenguaje de Consulta Estructurado (SQL).

ü    API
Una 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.

ü  SQL
    El Lenguaje de consultas estructurado (SQL) se utiliza para crear consultas de base de datos. LibreOffice permite formular consultas en SQL o de forma interactiva mediante el ratón
ü  JDBC
    La API Java Database Connectivity (JDBC) se puede usar para conectarse con una base de datos desde LibreOffice. Los controladores de JDBC se escriben en el lenguaje de programación Java y no son exclusivos de ninguna plataforma.
ü  NETBEANS
NetBeans es un entorno de desarrollo integrado libre, hecho principalmente para el lenguaje de programación Java. Existe además un número importante de módulos para extenderlo. NetBeans IDE es un producto libre y gratuito sin restricciones de uso.

ü  STATEMENT
    Permite enviar instrucciones a la Base de Datos.

ü  DBMS
(Data Base Management System).
Son las siglas en inglés para los Sistemas de Gestión de Bases de Datos (SGBD). Bajo este nombre se conoce a productos de fabricantes como Oracle, Sybase, Informix, Ingres, Borland, Microsoft, IBM, etc.Sistema de administración de bases de datos.



8.    Linkografía