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);
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();
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://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html?is-external=true