lunes, 15 de febrero de 2016


Java Data Base Connectivity




Definición
Java Data Base 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.




Objeto Connection 
 
El objeto Connection representa una conexión HTTP entre la prueba dinámica (el cliente) y el servidor Web. La prueba abre la conexión, aunque tanto la prueba como el servidor Web pueden cerrarla. Se pueden enviar múltiples solicitudes mediante una sola conexión, siempre que esta última permanezca abierta.

Propiedades

Propiedad
Descripción
Comprueba si la conexión está abierta.
Obtiene el número del puerto utilizado por la conexión.
Obtiene o define el número de redirecciones de encabezados HTTP que se siguen.
Obtiene el nombre del host o dirección IP del servidor al que está conectado el cliente.
Comprueba si la conexión HTTP entre el cliente y el servidor utiliza el protocolo SSL ("https://").

Métodos

Método
Descripción
Cierra la conexión, si está abierta. No devuelve un error si la conexión ya está cerrada.
Envía una solicitud HTTP al servidor.



Objetos Statement

El objeto Statement (sentencia) sirve para procesar una sentencia SQL estática y obtener los resultados producidos por ella. Solo puede haber un ResultSet abierto para cada objeto Statement en un momento dado. Todos los métodos statement que procesan una sentencia SQL cierran implícitamente el ResultSet actual de una sentencia si existe uno abierto.

Crear sentencias

Los objetos Statement se crean a partir de objetos Connection con el método créate Statement. Por ejemplo, suponiendo que ya exista un objeto Connection denominado conn, la siguiente línea de código crea un objeto Statement para pasar sentencias SQL a la base de datos:
Statement stmt = conn.createStatement();

Especificar características de ResultSet

Las características de los ResultSets están asociadas con la sentencia que finalmente los crea. El método Connection.createStatement permite especificar estas características de ResultSet. A continuación se ofrecen algunos ejemplos de llamadas válidas al método createStatement:
Ejemplo: 
método createStatement
// El siguiente código es nuevo en JDBC 2.0
 
Statement stmt2 = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATEABLE);
 
// El siguiente código es nuevo en JDBC 3.0
 
Statement stmt3 = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSOR_OVER_COMMIT);
Para obtener más información acerca de estas características, consulte la sección ResultSets.




java.sql

Interface ResultSet

Un objeto ResultSet mantiene un cursor que apunta a la fila actual de datos. Inicialmente, el cursor se coloca antes de la primera fila. El siguiente método se mueve el cursor a la siguiente fila, y porque devuelve falso cuando no hay más filas en el objeto ResultSet, se puede utilizar en un bucle while para recorrer el conjunto de resultados.

Un objeto ResultSet por defecto no es actualizable y tiene un cursor que se mueve hacia adelante solamente. Por lo tanto, se puede recorrer sólo una vez y sólo desde la primera fila hasta la última fila. Es posible producir objetos ResultSet que son desplazables y / o actualizable. El siguiente fragmento de código, en el que con es un objeto de conexión válida, ilustra cómo hacer que un conjunto de resultados que es desplazable e insensible a los cambios de los demás, y que es actualizable. Ver campos ResultSet para otras opciones.
Ejemplos
conectar Base Datos 

Instalar el Driver

Lo primero que tenemos que hacer es asegurarnos que el Driver se inicializa y se registra, para ello

 try
{
   Class.forName("com.mysql.jdbc.Driver");
} catch (Exception e)
{
   e.printStackTrace();
}


Establecer la conexión con la base de datos


Debemos tener el servidor de MySQL arrancado. Si hemos instalado y dejado esa opción como estaba, cada vez que encendamos el ordenador, se arrancará el servidor de MySQL, por lo que no tenemos que preocuparnos por ello
Para establecer la conexion, la clase DriverManager tiene métodos getConnection(). Usaremos uno de ellos

// Establecemos la conexión con la base de datos.

Connection conexion = DriverManager.getConnection ("jdbc:mysql://localhost/prueba","root", "la_clave");


Realizar una consulta


// Preparamos la consulta


Statement s = conexion.createStatement();

ResultSet rs = s.executeQuery ("select * from persona");

 

Leer los resultados


// Recorremos el resultado, mientras haya registros para leer, y escribimos el resultado en pantalla. 
while (rs.next())

{

    System.out.println (rs.getInt (1) + " " + rs.getString (2)+ " " + rs.getDate(3));


}Cerrar la conexión

// Cerramos la conexion a la base de datos. 
conexion.close();
Resumen
Una base de datos es un conjunto de datos con un mismo contexto y almacenados para su uso posteriormente. Por ejemplo, podría decirse que una biblioteca es una base de datos compuesta por una gran cantidad de documentos. La mayoría de las bases de datos pueden verse de forma digital debido al desarrollo tecnológico de la informática o la electrónica, y por ello son una gran solución a los problemas de almacenamiento de datos. Las bases de datos se utilizan para la gestión de empresas o también en entornos científicos para almacenar información experimental. Aquí os dejamos los componentes de bases de datos: Tablas Formulario Informes • Tiene filas y • Pantalla de • Resumen y columnas, por entrada de presentan ello se parece datos  de las a la hoja de tablas. Calculo. Consultas Macros Módulos • Son las que • Lenguaje de • Aumentan la realizan el programación funcionalidad trabajo en la simplificado. De la base de base de datos. Datos.
Summary
A database is a set of data in a single context and stored for use later. For example, it could be said that a library is a database comprising a large number of documents. Most of the databases can verse digitally, due to technological development of information technology and electronics, and son This a great solution to the problems of data storage. Databases are used to manage businesses or in environments Scientists Present paragraph experimental Information Store. Here we leave Components Databases Reports • Form Tables Hall has rows and • • Summary Screen English and columns For input This Present Facts nail Leaf table looks like. Calculation. Consultations Macros Modules • Think Of • Language • Increase they perform the programming job in simplified functionality. Base database. Data.
Recomendaciones
Uno de los principales problemas a los que nos debemos de enfrentar a la hora de diseñar una aplicación es optimizar lo máximo posible las consultas a la base de datos para que esta cargue lo más rápido posible.
A la hora de optimizar nuestra base de datos, hay que poner mucha atención no sólo a las consultas, sino también al esquema que estemos creando, ya que si partimos de un esquema mal construido, lo más seguro es que consigamos que nuestras instrucciones se ejecuten de forma ineficiente.
Veamos algunos consejos a tener en cuenta.
1.- Cuidado al diseñar el esquema de base de datos
El tamaño de una base de datos viene definido por el número de entradas que tenga almacenada por el tamaño de una fila, por lo que hay que buscar que el tamaño de una entrada sea el menor posible. Aquí es donde entra en juego el tipo de datos de cada una de las columnas.
Es aconsejable buscar el tipo de dato que mejor se adapte a la información que se almacene. No tiene lógica utilizar un tipo TEXT para almacenar un simple código postal, ya que en este caso sabemos que siempre tendrá 5 dígitos, y que con un tipo de datos char(5) podríamos ahorrar un gran número de bytes.

2.- Particionar las tablas

En muchos casos, diseñamos tablas donde se almacena mucha información pero que a la hora de la verdad sólo utilizamos algunos datos de forma asidua. En estos casos, lo mejor es dividir esa tabla en dos: en una tendremos la información que se utiliza, mientras que en la otra se almacenará el resto de información.
Con esta partición, estaremos consiguiendo que la tabla menos frecuente ocupe menos memoria.

3.- Uso adecuado de los índices
Hay muchos desarrolladores que ante una consulta lenta a la base de datos lo solucionan añadiendo índices a la misma. Esto puede funcionar en algunos casos, pero abusar del uso de los índices también puede traer problemas.

Recordemos que los índices se utilizan para indicar al motor de la base de datos que esa columna se utilizará de forma frecuente, con lo que conseguimos que la información se almacene en memoria. Cada uno de estos índices ocupa un espacio en memoria proporcional al número de filas de la tabla, por lo que si tenemos definidos muchos índices, el tamaño que estaremos ocupando será muy grande.

4.- Olvidarse de la consulta SELECT *
Cada vez que hacemos uso de esta consulta, nos estamos trayendo todos los campos que forman parte de la tabla, campos que en muchos casos no utilizaremos. Hay que tener en cuenta una cosa, cuanta más información nos traigamos, más lenta será la consulta, por lo que es recomendable limitar las consultas a las columnas que necesitemos.


5.- Olvidarse de los SELECT anidados y utilizar JOIN

El uso de los JOIN suelen dar un mejor resultado que el uso de SELECT anidados dentro de una consulta. Hay que recordar que por regla general, se puede convertir cualquier SELECT anidado en un JOIN de forma sencilla.

Bibliografía

https://msdn.microsoft.com/es-pe/library/aa287625(v=vs.71).aspx

https://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html?is-external=true