El documento describe cómo conectarse a una base de datos desde Java usando JDBC. Primero se debe descargar el controlador JDBC apropiado y luego establecer una conexión mediante DriverManager.getConnection. Una vez conectado, se pueden crear objetos Statement para ejecutar consultas SQL y obtener resultados a través de objetos ResultSet.
1. Carrera:
Ingeniería de sistemas y telemática
Curso:
Desarrollo de software i.
Tema:
Java con base de datos
Docente:
Marco Aurelio Porro Chulli
Integrantes:
Erlin Darwin herrera cieza.
Yosmer Aguilar cabrera.
2. Primero descargar el controlador JDBC.
Java Database Connectivity, más conocida por sus siglas JDBC, es una API que
permite la ejecución de operaciones sobre base de datos desde el Lenguaje de
programación java,
El API JDBC se presenta como una colección de interfaces de java y métodos de
gestión de manejadores de conexión hacia cada modelo específico de base de
datos.
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,
Si ya lo emos descargado solo le importamos o agregamos a nuestro proyecto.
3. Conectividad de Bases de Datos de Java (JDBC)
Se considera el primer producto estándar de Java con DBMS, creado y
ofrecido por primera vez en marzo de 1996.
Crea una interfaz con un nivel de programación que le permite comunicarse
con las bases de datos mediante un concepto similar al de componentes
ODBC.
El estándar de JDBC está basado en un nivel de interfaz con instrucciones SQL
X/Open, que es básicamente lo mismo que en ODBC.
El puente JDBC-ODBC manipula la traducción de llamadas JDBC a aquellas
que puedan ser entendidas por el cliente ODBC a un nivel de lenguaje C.
Las clases de objetos para iniciar la transacción con la base de datos, están
escritas completamente en Java .
4. JDBC vs. ODBC
En java se usa jdbc por las siguientes maneras
• ODBC usa una interface escrita con el lenguaje de programación C. Por
lo tanto como que C no es un lenguaje portable las aplicaciones JAVA
perderían también automáticamente su portabilidad.
• ODBC se ha de instalar manualmente en cada máquina, en cambio los
drivers de JDBC como están escritos en JAVA son automáticamente
instalables, portables y seguros.
Hay que decir también, que existen drivers puente entre JDBC-ODBC.
PUENTE JDBC/OBDC
Sum ha diseñado un puente que permite utilizar la API de JDBC en
combinación con controladores ODBC.
JDBC-ODBC bridge plus ODBC driver (tipo 1): este driver fue desarrollado
entre Sun e Intersolv y permite al programador acceder a fuentes de datos
ODBC existentes mediante JDBC.
5. El primer programa con JDBC
la API JDBC incluye varias clases que se deben utilizar para conseguir acceso a una Base de
Datos.
Clase/Interface Descripción
Driver
Permite conectarse a una Base de Datos: cada gestor de Base de Datos requiere un Driver
distinto.
DriverManager Permite gestionar todos los Drivers instalados en el sistema.
DriverPropertyInfo Proporciona diversa información acerca de un Driver.
Connection
Representa una conexión con una Base de Datos. Una aplicación puede tener más de una
conexión a más de una Base de Datos.
DatabaseMetadata Proporciona información acerca de una Base de Datos, como las tablas que contiene, etc.
Statement Permite ejecutar sentencias SQL sin parámetros.
PreparedStatement Permite ejecutar sentencias SQL con parámetros de entrada.
CallableStatement
Permite ejecutar sentencias SQL con parámetros de entrada y salida, típicamente procedimientos
almacenados.
ResultSet Contiene las filas o registros obtenidos al ejecutar un SELECT.
ResultSetMetadata Permite obtener información sobre un ResultSet, como el número de columnas, sus nombres, etc.
6. Como conectarnos a una base de datso.
Establecer una conexión con una Base de Datos mediante JDBC es sencillo: en
primer lugar, registramos el Driver a utilizar (que en nuestro caso es el puente
JDBC/ODBC), mediante el código
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );para que no se produzca un
error al momento de conectarnos.
A continuación, se lleva a cabo la conexión a la Base de Datos mediante el código
Connection conexion = DriverManager.getConnection( urlBD, usuarioBD,
passwordBD );
La clase DriverManager gestiona los Drivers registrados en el sistema: al llamar
a getConnection, recorre la lista de Drivers cargados hasta encontrar uno que sea
capaz de gestionar la petición especificada por urlBD
Los parámetros usuarioBD y passwordBD corresponden al nombre del usuario y su
contraseña, necesarios la mayor parte de las veces para acceder a cualquier Base
de Datos.
7. La cadena utilizada para indicar la Base de Datos siempre tiene tres partes,
separadas por el carácter ":". La primera parte es siempre "jdbc". La segunda
parte indica el subprotocolo, y depende del Sistema de Gestión de Base de
Datos utilizado: en nuestro caso, es "odbc", pero paraSQLAnyware, por
ejemplo, es "dbaw". La tercera parte identifica la Base de Datos concreta a la
que le deseamos conectar.
Y para cerrar la conexión se escribe el siguiente código
conexión.close();
8. Al utilizar la API JDBC es posible obtener diversos errores debido a que se ha
escrito incorrectamente una sentencia SQL, a que no se puede establecer una
conexión con la Base de Datos por cualquier problema, etc.
El paquete java.sql proporciona tres nuevas excepciones
Excepción Descripción
SQLException Error SQL.
SQLWarning Advertencia SQL.
DataTruncation
Producida cuando se truncan
datos inesperadamente, por
ejemplo al intentar
almacenar un texto
demasiado largo en un
campo.
9. El Objeto Connection.
Un objeto Connection representa una conexión a una base de datos.
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.
siguiente código ejemplifica cómo abrir una conexión a una base de datos
• “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:
• Jdbc:<subprotocolo>:<subnombre>
10. El Objeto Statement
Un objeto Statement se usa para enviar sentencias SQL a una base de datos. Una
vez que se ha establecido una conexión con una base de datos particular, esa
conexión puede ser usada para enviar sentencias SQL. esa conexión puede ser
usada para enviar sentencias SQL.
Creación de objetos Statement
El siguiente código crea un bojeto Statement
Connection con = DriverManager.getConnection(url);
Statement stmt = con.createStatement();
• La sentencia SQL que será enviada a la base de datos es proporcionada como
argumento a uno de los métodos para ejecutar un objeto Statement:
• ResultSet rs = stmt.executeQuery(SELECT a, b, c FROM Nomtable);
11. EL Objeto ResultSet
Un ResultSet contiene todos los registros (filas) que satisfacen las
condiciones impuestas en una sentencia SQL y proporciona acceso a los
datos en dichos registros a través de un conjunto de métodos get que
permiten acceder a los diferentes campos o atributos (columnas) del
registro actual. Un ResultSet mantiene un cursor que apunta al registro
actual.
El método ResultSet.next() se usa para moverse al siguiente registro del
ResultSet
Los métodos getXXX proporcionan los medios para obtener los valores de
los campos, atributos o columnas del registro actual
la siguiente porción de código imprimiría los valores de todos los registros:
• while(rs.next()){
• int i = rs.getInt(″a″);
• String s = rs.getString(″b″);
• Float f = rs.getFloat(″c″); System.out.println(″ROW= ″ +i+ ″ ″ +s+ ″ ″ + f); }
12. Ejemplo
Para realizar la conexión a base de datos desde java necesitamos hacer uso de
JDBC. Las bases de datos que deseemos conectar deberán proveernos el driver
JDBC en un empaquetado JAR para añadirlo a las librerías del proyecto.
NetBeans se podría ir al directorio Libraries del Proyecto, hacer clic derecho sobre
el y elegir Add Library y en la lista podría encontrase la que necesitemos, o si
queremos agregarla manualmente Add JAR/Folder y seleccionar desde la dirección
donde lo tenemos almacenado.
Y da clic en add Library.
13. • Bueno ha hora empieza la programación te lo boy hacer por pates
package beastieux.gui;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import javax.sql.rowset.CachedRowSet;
import com.sun.rowset.CachedRowSetImpl;
14. • public class Ejm1_ConectarDataBase {
• public CachedRowSet Function(String sql)
• {
• try
• {
• Class.forName("Driver");
• String url = "jdbc:motor:servidor:puerto/basededatos";
• Connection con = DriverManager.getConnection(url, "usuario","contraseña");
• Statement s = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
• ResultSet.CONCUR_READ_ONLY);
• ResultSet rs= s.executeQuery(sql);
• CachedRowSet crs = new CachedRowSetImpl();
• crs.populate(rs);
• rs.close();
• s.close();
• con.close();
• return crs;
• }
16. • Como habrán podido apreciar en el código, el manejo de excepciones es
relativamente sencilla, lo ideal sería especificar las excepciones por cada
conexion, statement y resultset para de esa manera asegurarnos que
permanezcan cerradas al finalizar la ejecución o aun cuando existieran
errores; de igual manera sería muy útil obligar a cerrar las conexiones
desde dentro de una clausula finally anexada al try – catch.
• Por último la url de conexión “jdbc:motor:servidor:puerto/basededatos”,
variará a continuación de jdbc, según el motor de base de datos al que
deseemos conectarnos (PostgreSQL, MySQL, Oracle, Derby, etc) , la
dirección IP del servidor, el puerto y finalmente el nombre de la base de
datos al que queramos acceder.