JDBC











JDBC (Database Connectivity):
I.    CONTENIDO:
1.   DEFINICIÓN:
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.


Tipos:
Existen 4 tipos de driver JDBC que se detallan a continuación.
Dependiendo del DBMS y del tipo de acceso a la base de datos que se utilice, puede ser necesario obtener uno u otro tipo de driver JDBC. Generalmente se utilizan los drivers de tipo 4, que se presentan a continuación junto con otros tipos de driver.                 
Tipo 1: Java – ODBC:
Esta arquitectura, tiene como ventaja importante que permite la utilización de drivers ODBC existentes, pero la desventaja de que hay que instalarlos en cada máquina, así como el cliente de DBMS.
De esta forma, en el cliente se requiere:

·       DRIVERS JDBC
·       DRIVERS ODBC (se crea un Data Source con la información de conexión)
·       CLIENTE DBMS
La aplicación GeneXus-Java se comunica con los DRIVERS JDBC. A los DRIVERS JDBC se les configura un parámetro para indicar que la conexión es a cierto Data Source. Y finalmente con la información definida en el Data Source, se establece la conexión del cliente con el Servidor Manejador de Base de Datos (DBMS).
Las implementaciones actuales de estos drivers no son muy fiables, por lo que no se recomienda su utilización en ambientes de producción. Sin embargo, existe un caso por el cual utilizar el driver tipo 1: algunas versiones de AS/400 no soportan los dirvers JDBC, de modo que la única forma de implementar una aplicación Java en 2 capas, en esos casos, sería mediante este tipo de driver llamado también Bridge JDBC-ODBC.
Tipo 2: Java - Protocolo DBMS:
Con esta implementación, en el cliente se tienen los DRIVERS JDBC que se comunican directamente (en forma nativa) con el CLIENTE Oracle, Sybase, Informix, DB2, o cualquier otro DBMS.
De esta forma, entonces, al igual que el driver de tipo 1, este también requiere que se instale en cada máquina cliente, los DRIVERS JDBC y CLIENTE DBMS.
En general los drivers tipo 2, también llamados Native-API Partly-Java,se comunican muy rápido con la base de datos, siendo en teoría, los más performantes. Salvo por ésto, este tipo de driver no presenta demasiadas ventajas con respecto a las otras alternativas.
Tipo 3: Java -Servidor JDBCv:
Esta clase de driver traduce llamadas JDBC en un protocolo de red independiente del DBMS y luego, a un protocolo de DBMS.
Un Servidor JDBC, realiza la tarea de middleware, siendo capaz de conectar un cliente Java a diferentes bases de datos.
La implementación del Servidor JDBC se realiza mediante la instalación de un software que sabe “escuchar” los requerimientos del CLIENTE JDBC y traducirlos a llamadas nativas para los DBMSs.
Una ventaja que posee el driver tipo 3, también conocido como net-protocol all-Java, es que no requiere instalación en los clientes, según el DBMS. Como contrapartida, este driver requiere la instalación del Servidor JDBC.
Merant DataDirect SequeLink Java Edition es un driver de tipo 3 que se ha probado para SQL Server y Oracle.
Tipo 4: Java -> DBMS:
El driver tipo 4 convierte llamadas JDBC directamente en el protocolo de red usado por el DBMS. Esto permite llamadas directas desde la máquina del cliente al servidor del DBMS y es una solución práctica para el acceso a Intranets.
Requieren más código, por lo que si se usa en 2 capas hay que bajar más código al cliente, y la performance suele ser algo menor que la de los otros drivers (esto puede depender mucho del driver, de la cantidad de conexiones simultaneas, etc). De todas formas, este es el tipo de driver más común, y el que se usa más en general.
Dado que muchos de estos protocolos son propietarios, los proveedores de bases de datos son la principal fuente de este tipo de driver.
Algunos ejemplos son:
·       I-net Software
·       WebLogic jDriver
·       AsToolBox
·       Merant

El driver tipo 4, también denominado native-protocol all-Java, no requiere instalación en los clientes, según el DBMS.
Aplicaciones:
TestConnection.java: Aplicación que permite comprobar si se puede establecer una conexión exitosa con la base de datos
Appl_01.java: Aplicación que permite visualizar las tablas existentes dentro de la base de datos.
Appl_02.java: Aplicación que visualiza los discos e intérpretes dentro de la base de datos.
Appl_03.java: Aplicación que permite crear una tabla con tres campos en la base de datos.
Appl_04.java: Aplicación que permite agregar nuevo registro a la nueva tabla creada anteriormente con Appl_03.java

2.   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.
Por ejemplo, el DAL podría devolver una referencia al objeto (en términos de programación orientada a objetos) completo con sus atributos en lugar de un registro de campos de una tabla de la base de datos. Esto permite que los módulos del cliente (o usuario) se crearan con un mayor nivel de abstracción. Este tipo de modelo puede ser implementado mediante la creación de una clase de métodos de acceso a datos que hacen referencia directamente a un conjunto correspondiente de procedimientos almacenados de base de datos. Otra aplicación potencial podría recuperar o escribir registros hacia o desde un sistema de archivos. El DAL esconde esa complejidad del almacén de datos subyacente del mundo externo.
Por ejemplo, en lugar de utilizar comandos tales como insertar, eliminar y actualizar para acceder a una tabla específica en una base de datos, una clase y unos procedimientos almacenados se podrían crear en la base de datos. Los procedimientos se han llamado de un método dentro de la clase, lo que devolvería un objeto que contiene los valores solicitados. O bien los comandos inserción, eliminación y actualización podría ser ejecutado en funciones simples como registerUser o loginUser almacenada dentro de la capa de acceso a datos.
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 pueden 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 la base de datos de la CHA puede hablar. En cualquier circunstancia, que tiene una capa de acceso de datos proporciona una ubicación centralizada para todas las llamadas en la base de datos, y por lo tanto hace que sea más fácil de puerto de la aplicación a otros sistemas de bases de datos (suponiendo que el 100% de la interacción de base de datos se hace en la CHA para un dado aplicación).
Herramientas mapeo objeto-relacional proporcionan capas de datos de esta manera, siguiendo el modelo registro activo.
3.   CONFIGURACION DE CONEXIÓN MYSQL PARA EL PREYECTO NETBEANS:

·       En el Proyecto-Librerías-Propiedades; se debe descargar el driver que se Compile, quien se encarga de comunicar una aplicación java con mysql. Después se configura el archivo .jar al conjunto de librerías de la siguiente manera:
·       Seleccionamos el proyecto, damos clic derecho, luego clic en propiedades y vamos a la sección librerías dentro de las propiedades.
·       Seleccionamos la carpeta compile y luego el botón Add library. En la ventana emergente Add Library hacemos clic en el botón Manage Libraries, Add Library Manage Libraries
·       En la venta Library Manager hacemos clic en el nombre del botón New Library, luego en la ventana emergente damos clic en el nombre de la librería y el tipo se deja el valor predeterminado; luego damos clic en ok New Library.
·       En la ventana Library Manager seleccionamos la librería recién creada y hacemos clic en el botón Add JAR/Fólder, en la ubicación del conector Add JAR/Fólder.
·       Seleccionamos la ubicación del conector de Mysql-Java y hacemos clic en el botón Add JAR/Fólder.
·       Clic en el botón Ok, luego en el botón Add Library y finalmente clic en el botón Ok. Librería Mysql.
·       En la ventana anterior nos ubicamos en RUNTIME y seleccionamos database y lo desplegamos, luego nos ubicamos en Drivers y damos clic derecho y seleccionamos New Drivers. Runtime Drivers New Drivers. Luego damos clic en Add y buscamos nuevamente el conector mysql utilizado los pasos anteriores.
·       Finalmente nos aparece en la carpeta de Drivers el conector a Mysql, nos ubicamos en él y damos clic derecho se despliega una ventana y damos clic en connect using.
·       En la ventana que nos aparece se digita la información, activamos la casilla de verificación y damos clic en OK. Nombre de la base creada en Mysql usuario Contraseña.
·       En esta ventana damos clic en OK y finalmente nos aparece la conexión con las tablas creadas en mysql.

Para la gente del mundo Windows, JDBC es para Java lo que ODBC es para Windows. Windows en general no sabe nada acerca de las bases de datos, pero define el estándar ODBC consistente en un conjunto de primitivas que cualquier driver o fuente ODBC debe ser capaz de entender y manipular. Los programadores que a su vez deseen escribir programas para manejar bases de datos genéricas en Windows utilizan las llamadas ODBC.
Con JDBC ocurre exactamente lo mismo: JDBC es una especificación de un conjunto de clases y métodos de operación que permiten a cualquier programa Java acceder a sistemas de bases de datos de forma homogénea. Lógicamente, al igual que ODBC, la aplicación de Java debe tener acceso a un driver JDBC adecuado. Este driver es el que implementa la funcionalidad de todas las clases de acceso a datos y proporciona la comunicación entre el API JDBC y la base de datos real.
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).

4.     USO DE JDBC EN APLICACIONES JAVA:


JDBC es una interfaz de programación de aplicaciones (API) que las aplicaciones Java utilizan para acceder a las bases de datos relacionales. El soporte de IBM Data Server para JDBC le permite grabar aplicaciones Java que acceden a datos locales de DB2 o IBM Informix o a datos relacionales remotos de un servidor que admite DRDA.

USO DE LAS CLASES CONNECTION, DRIVERMANAGER
Connection
Un objeto Connection representa una conexión a una base de datos. Una sesión con una conexión incluye las sentencias SQL que son ejecutadas y los resultados que son devueltos a través de dicha conexión. Una misma aplicación puede tener una o más conexiones con una sola base de datos o puede tener conexiones con varias bases de datos diferentes. La forma estándar de establecer una conexión con una base de datos es llamando al método DriverManager.getConnection. Este método toma como parámetro una cadena de caracteres que contiene una URL. La clase DriverManage trata de localizar el driver que pueda conectar con la base de datos representada por esa URL. El siguiente código ejemplifica cómo abrir una conexión a una base de datos localizada en la URL “jdbc:odbc:wombat”: String url = jdbc:odbc:wombat; Connection con = DriverManager.getConnection(url); Una URL de JDBC facilita una forma de identificar una base de datos de forma que el driver apropiado la reconozca y establezca una conexión con ella. La sintaxis estándar para URLs de JDBC es la siguiente:  Una URL de JDBC tiene tres partes separadas por dos puntos: jdbc es el protocolo. El protocolo en una URL JDBC es siempre jdbc. subclasses subclasses Connection Statement PreparedStatement CallableStatement ResultSet Data Types createStatement prepareStatement prepareCall executeQuery executeQuery executeQuery getXXX getMoreResults getResultSet 78 Informática III es usualmente el driver o el mecanismo de conectividad de la base de datos, el cual debe ser soportado por uno o más drivers. Un ejemplo de un subprotocolo es odbc, que ha sido reservado para URLs que especifican fuentes de datos de ODBC. Por ejemplo, para acceder a una base de datos a través del Puente JDBC-ODBC se usará una URL como la siguiente: jdbc:odbc:fred donde el subprotocolo es odbc y el subnombre es fred, una fuente de datos ODBC. es una forma de identificar la base de datos. Puede variar dependiendo del subprotocolo y puede tener un subsubnombre con cualquier sintaxis interna que el programador del driver haya elegido. La función del es dar la suficiente información para localizar la base de datos.
Clase drivermanager
Implementa la capa de gestión de JDBC, y trabaja como intermediaria entre el usuario y los drivers. Guarda la lista de los drivers que están disponibles y establece la conexión entre la base de datos y el driver apropiado. Además la clase DriverManager se ocupa de cosas cómo gestionar los límites de tiempo de ‘login’ en el driver y de la salida de los mensajes de traza y log.
Para aplicaciones simples, el único método en esta clase que necesita un programador general para su uso directamente es DriverManager.getConnection. Como su nombre indica, este método establece una conexión con la base de datos. JDBC permite al usuario llamar a los métodos de DriverManager getDriver, getDrivers y registerDriver así como al método de Driver connect, pero en la mayoría de los casos es preferible dejar que la clase DriverManager gestione los detalles al establecer la conexión.
Mantenimiento de la lista de drivers disponibles.
La clase DriverManager mantiene una lista de clases disponibles que han sido registrados mediante el método DriverManager.registerDriver. Todas las clases Driver deben escribirse con una sección estática que cree una instancia de la clase y luego la registre en la clase DriverManager cuando se cargue. Además el usuario normalmente no debería llamar a DriverManager.registerDriver directamente; debería llamarse automáticamente por el driver cuando esté se carga. Una clase Driver se carga, y por tanto se registra, de dos formas diferentes:
  a)    Mediante una llamada al método Class.forName. Este carga explícitamente la clase driver. Dado que no depende de ningún ‘setup’ externo, esta forma de cargar drivers es la recomendada. El siguiente código carga la clase acme.db.Driver:
Class.forName("acme.db.Driver");
Si acme.db.Driver se ha escrito para que al cargar produzca una instancia y llame al método DriverManager.registerDriver con esta instancia como argumento (es lo que debería hacer), entonces este estará en la lista de drivers disponibles para efectuar la conexión.
     b)    Mediante la adición del driver a la propiedad jdbc.drivers de java.lang.System- Esta es una lista de nombres de clases de drivers, separadas por dos puntos, que es la que carga la clase DriverManager. Cuando la clase DriverManager se inicializa, mira en la propiedad jdbc.drivers, y si el usuario ha introducido uno o más drivers, la clase DriverManager intenta cargarlos. El siguiente código ilutsra como un programador debería introducir estas tres clases en ~/.hotjava/properties
jdbc.drivers=foo.bah.Driver:wombat.sql.Driver:bad.test.ourDriver;
La primera llamada al método DriverManager hará que estos drivers se carguen automáticamente.
Nótese que en esta segunda manera de cargar los drivers es necesario una preparación del entorno que es persistente. Si existe alguna duda sobre esto es preferible y más seguro llamar al método Class.forName para cargar explicitamente cada driver. Este es también el método que se usa para traer un driver particular puesto que una vez que la clase DriverManager ha sido inicializada no chequeará la lista de propiedades jdbc.drivers.
En ambos casos, es responsabilidad de la clase Driver recién cargada registrarse a sí misma mediante una llamada a DriverManager.registerDriver. Como se ha mencionado anteriormente, esto debería hacerse automáticamente al cargar la clase.
Por razones de seguridad, la capa de gestión de JDBC guardará traza de que clases de cargadores provee cada driver. Entonces cuando la clase DriverManager abre una conexión solo usará los drivers que vienen desde el sistema de ficheros local o desde las mismas clases cargadoras como el código que solicita la conexión.
Establecer una conexión:
Una vez que la clase Driver ha sido cargada y registrada con la clase DriverManager, se está en condiciones de establecer la conexión con la base de datos. La solicitud de la conexión se realiza mediante una llamada al método DriverManager.getConnection, y DriverManager testea los drivers regsitrados para ver si puede establecer la conexión.
A veces puede darse el caso de que más de un driver JDBC pueda establecer la conexión para una URL dada. Por ejemplo, cuando conectamos con una base de datos remota, podría ser posible usar un driver puente JDBC-ODBC, o un driver JDBC de protocolo genérico de red, o un driver suministrado por el vendedor.
En tales casos, el orden en que los drivers son testeados es significante porque DriverManager usará el primer driver que encuentre que pueda conectar con éxito a la base de datos.
Primero DriverManager intenta usar cada driver en el orden en que ha sido registrado (los drivers listados en la propiedad jdbc.drivers son siempre los registrados primero). Saltará cualquier driver con código ‘untrusted’, a menos que se cargue desde el mismo código fuente que el código que intenta abrir la conexión.
Testea los drivers mediante la llamada al método Driver.connect cada uno por turno, pasándole como argumento la URL que el usuario ha pasado originalmente al método DriverManager.getConnection. El primer driver que reconozca la URL realiza la conexión.
Una primera ojeda puede parecer insuficiente, pero son necesarias solo unas pocas llamadas a procedimientos y comparaciones de cadena por conexión puesto que no es probable que haya docenas de drivers se carguen concurrentemente.
Es usualmente el driver o el mecanismo de conectividad de la base de datos, el cual debe ser soportado por uno o más drivers. Un ejemplo de un subprotocolo es ODBC, que ha sido reservado para URLs que especifican fuentes de datos de ODBC. Por ejemplo, para acceder a una base de datos a través del Puente JDBC-ODBC se usará una URL como la siguiente: jdbc:odbc:fred donde el subprotocolo es odbc y el subnombre es fred, una fuente de datos ODBC es una forma de identificar la base de datos. Puede variar dependiendo del subprotocolo y puede tener un subsubnombre con cualquier sintaxis interna que el programador del driver haya elegido. La función es dar la suficiente información para localizar la base de datos.
EJEMPLOS:
a) En el siguiente ejemplo, el código muestra, establece varias propiedades de conexión en la URL de conexión y, a continuación, llama al método getConnection de la clase DriverManager para devolver un objeto SQLServerConnection.
Después, el código muestra, usa el método createStatement del objeto SQLServerConnection para crear un objeto SQLServerStatement y, a continuación, se llama al método executeQuery para ejecutar la instrucción SQL.
Finalmente, el ejemplo usa el objeto SQLServerResultSet devuelto por el método executeQuery para procesar una iteración mediante los resultados devueltos por la instrucción SQL.
  import java.sql.*; 
  public class connectURL { 
  public static void main(String[] args) { 
  // Create a variable for the connection string. 
   String connectionUrl = "jdbc:sqlserver://localhost:1433;" + 
  "databaseName=AdventureWorks;user=UserName;password=*****"; 
  // Declare the JDBC objects. 
     Connection con = null; 
      Statement stmt = null; 
      ResultSet rs = null; 
       try { 
         // Establish the connection. 
         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
         con = DriverManager.getConnection(connectionUrl); 
         // Create and execute an SQL statement that returns some data. 
         String SQL = "SELECT TOP 10 * FROM Person.Contact"; 
         stmt = con.createStatement(); 
         rs = stmt.executeQuery(SQL); 
           // Iterate through the data in the result set and display it. 
         while (rs.next()) { 
            System.out.println(rs.getString(4) + " " + rs.getString(6)); 
         } 
      } 
        // Handle any errors that may have occurred. 
      catch (Exception e) { 
         e.printStackTrace(); 
      } 
      finally { 
         if (rs != null) try { rs.close(); } catch(Exception e) {} 
         if (stmt != null) try { stmt.close(); } catch(Exception e) {} 
         if (con != null) try { con.close(); } catch(Exception e) {} 
      } 
   } 


b)    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 1daw
  conexion = DriverManager.getConnection("jdbc:mysql://localhost/prueba", "root", "1daw");
            // 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());
            }
        }
    }
}


II.    RESUMEN:
JDBC (Java Database Connectivity) es un API de Java que nos permite conectarnos con bases de datos y realizar operaciones sobre ellas utilizando instrucciones SQL desde una aplicación Java. Con JDBC tenemos una interfaz para conectarnos con una base de datos sin tener que preocuparnos de si es una base de datos MySQl, Oracle, SQLServer o cualquier otro tipo de base de datos. El único cambio que habría que hacer para cambiar el tipo de base de datos de una aplicación sería cambiar el driver especifico de la base de datos en cuestión.
JDBC es usado para enviar comandos SQL hacia una base de datos relacional, que puede ser Oracle, Infomix, SyBase, etc.
JDBC establece una conexión con una BD, envía sentencias SQL y procesa los resultados de la siguiente manera:

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 permite al usuario llamar a los métodos de Driver Manager get Driver, get Drivers y register Driver asi como al método de Driver connect, pero en la mayoria de los casos es preferible dejar que la clase Driver Manager gestione los detalles al establecer la conexión.
La clase Driver Manager mantiene una lista de clases disponibles que han sido registrados mediante el método Driver Manager. register Driver.

III.    SUMMARY:
JDBC (Java Database Connectivity) is a Java API that allows us to connect to databases and perform operations on them using SQL statements from a Java application. With JDBC we have an interface to connect with a database without having to worry about whether it is a MySQl database, Oracle, SQLServer or any other type of database. The only change that would have to be made to change the database type of an application would be to change the specific driver of the database in question.
JDBC is used to send SQL commands to a relational database, which can be Oracle, Infomix, SyBase, etc.
JDBC establishes a connection to a DB, sends SQL statements and processes the results as follows:

Connection with = 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 allows the user to call the Driver Manager methods get Driver, get Drivers and register Driver as well as the Driver connect method, but in most cases it is preferable to let the Driver Manager class manage the details when establishing the connection.
The Driver Manager class maintains a list of available classes that have been registered using the Driver Manager method. register Driver.

IV.    RECOMENDACIONES:
·   El controlador JDBC nativo está diseñado para ser una interfaz Java de alto rendimiento que permita trabajar con la base de datos. Sin embargo, para obtener el mejor rendimiento, es necesario crear las aplicaciones de manera que aprovechen el potencial que puede ofrecer el controlador JDBC nativo. Los siguientes consejos pretenden llevar a la práctica las mejores técnicas de programación JDBC. La mayoría de ellos no son específicos del controlador JDBC nativo. Por tanto, las aplicaciones que se escriban de acuerdo con estas directrices también tendrán un buen rendimiento si se emplean con controladores JDBC distintos del nativo.
·     Para ejecutar Applets, en 2 capas, si se utiliza el driver tipo 3, el Servidor JDBC deberá encontrarse en el mismo host que el Servidor Web, por ser el Servidor JDBC el que resolvería la conexión. En este caso, sería posible efectuar conexión con un DBMS que no se encuentre en el mismo host que el Servidor Web.
·   Para ejecutar Applets, en 2 capas, si se utiliza el driver tipo 4, el DBMS deberá encontrarse en el mismo host que el Servidor Web pues no se permite a un Applet establecer una conexión con otra máquina que no sea el servidor de donde provino.
V.    CONCLUSIONES:
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.
Al utilizar JDBC implica construir y ejecutar repetidamente sentencias SELECT, INSERT, UPDATE y DELETE. Por lo tanto; se crea bastante código que estará muy acoplado a la base de datos que estemos usando, lo que se tiene que hacer es iterar manualmente sobre las propiedades de objetos como ResultSet cada vez que consultemos algo en la base de datos. A su vez es muy costoso crear PreparedStatements en cada caso por el mismo motivo de las iteraciones tendríamos que gestionar manualmente el orden de las inserciones, actualizaciones y borrados para que no hubiese problemas con la integridad referencial.

VI.    APRECIACIÓN DEL EQUIPO:
JDBC es un Interfaz de programación de aplicaciones 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.
Con la ayuda de JDBC, la habilidad de java para integrarse con DBMS comerciales y su naturaleza orientada al manejo de la red, es posible crear un ambiente ideal de tipo cliente-servidor. El API JDBC hace posible la realización de las siguientes tareas:
·       Establecer una conexión con una base de datos.
·       Enviar sentencias SQL.
·       Manipular los datos.
·       Procesar los resultados de la ejecución de las sentencias.

VII.    GLOSARIO DE TÉRMINOS:
·       Driver:  Es un programa que controla un dispositivo. Cada dispositivo, ya sea una impresora, un teclado, etc., debe tener un programa controlador.
·       JDBC: del inglés Java Database Connectivity (Conectividad de base de datos Java).
·       API: Es la interfaz de programación de aplicaciones, se trata del conjunto de llamadas a ciertas bibliotecas que ofrecen acceso a ciertos servicios desde los procesos y representa un método para conseguir abstracción en la programación, generalmente (aunque no necesariamente) entre los niveles o capas inferiores y los superiores del software.
·       ODBC: (Open DataBase Connectivity), “Abrir Conectividad de Base de Datos”, 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.
·       DBMS: Los sistemas de gestión de bases de datos (SGBD) del inglés "Database Management System" (DBMS) son un tipo de software muy específico, dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan.
·       Middleware: Es un software que asiste a una aplicación para interactuar o comunicarse con otras aplicaciones, o paquetes de programas, redes, hardware y/o sistemas operativos.
·       Mapeo: Objeto-relacional (más conocido por su nombre en inglés, Object-Relational mapping, o sus siglas O/RM, ORM, y O/R mapping) es una técnica de programación para convertir datos entre el sistema de tipos utilizado en un lenguaje de programación orientado a objetos y la utilización de una base de datos relacional como motor de persistencia.
·       Acrónimo: El significado de un acrónimo es la suma de los significados de las palabras que lo generan. Por ejemplo, el término telemática procede de telecomunicación e informática, que a su vez es acrónimo de información y automática.
·       Testeo: Es la prueba del software o investigaciones empíricas y técnicas cuyo objetivo es proporcionar información objetiva e independiente sobre la calidad del producto a la parte interesada.

VIII.    LINKOGRAFÍA:
·       https://es.wikipedia.org/wiki/Capa_de_acceso_a_datos
·       http://www.juntadeandalucia.es/servicios/madeja/contenido/subsistemas/arquitectura/capa-acceso-datos
·       http://profesores.elo.utfsm.cl/~agv/elo330/2s03/projects/JDBC/jdbc-03.html
·       http://profesores.fi-b.unam.mx/sun/Downloads/Java/jdbc.pdf
·       https://es.slideshare.net/secret/NcaE74Ng9Dcjjp





Comentarios

Entradas más populares de este blog

TRANSACCIONES EN SQL SERVER

APLICACIONES N-CAPAS EN VISUAL.NET

PROCEDIMIENTOS ALMACENADOS