You are on page 1of 4

JDBC – Java Data Base Connectivity

1. Establecer una conexión


El primer paso necesario para acceder a una base datos, es establecer una conexión hacia ella. Este
paso conlleva dos tareas que son cargar los drivers y hacer la conexión, propiamente dicha.

1.1. Cargar los drivers


Nosotros utilizaremos el driver de enlace JDBC-ODBC, este nos permitirá enlazarnos hacia una
base de datos ODBC (Open Database Connectivity). Para poder utilizar ella, necesitamos cargar
la clase sun.jdbc.odbc.JdbcOdbcDrive, utilizaremos el siguiente fragmento de código:

try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(java.lang.ClassNotFoundException e)
{
System.err.print("ClassNotFoundException:");
System.err.println(e.getMessage());
}

puesto que Class.forName() devuelve una excepción, debemos manejar esta excepción con el
método catch (Exception e).

Una vez cargados los drivers estamos listos para hacer la conexión.

1.2. Hacer la Conexión


La siguiente tarea es enlazar(conectar) el driver con la apropiada base de datos. Esto lo
haremos con el siguiente código :
FT

Connection con = null;


A

try
R

{
D

con=DriverManager.getConnection(url,user,pwd);
}
catch(SQLException ex)
{
System.err.println("aaSQLException: " + ex.getMessage());
}

Necesitamos utilizar la interface Connection del paquete java.sql


DriverManager.getConnection(url,user,pwd), url indica el protocolo y la fuente de datos
utilizado para hacer la conexión , nosotros usaremos (url=”jdbc:odbc:<datasource>”), ya que
nuestra conexión será con una base de datos ODBC. Aquí, <datasource> es la fuente de
datos, por ejemplo si la fuente de datos es “Videos”, entonces el url = “jdbc:odbc:Videos”.
Los demás parámetros son el nombre de usuario (ejemplo: user = “sa”) y el password de
conexión (ejemplo: pwd=”sa”)

La conexión devuelta por el método DriverManager.getConnection es una conexión abierta que


se puede utilizar para crear sentencias JDBC que pasan como sentencias SQL al manejador de
Base de Datos. En el ejemplo mostrado el objeto con es una conexión abierta y lo usaremos
para trabajar con la base de datos por ejemplo: para insertar registros, realizar consultas, realizar
actualizaciones, etc.

José Manuel Saavedra Rondo - 1`-


Ingeniero Informático
JDBC – Java Data Base Connectivity

Ejemplo 1: Estableciendo una conexión a una base de datos ODBC en SQLServer

Ejemplo1.java
import java.sql.*;

class Ejemplo1
{
private Connection con;

public Ejemplo1()
{
con = null;
}

public void establecerConexion(String url, String userName, String pwd)


{
/******Cargando los drivers contenidos en la clase
sun.jdbc.odbc.JdbcOdbcDriver
******/
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

}catch(ClassNotFoundException e)
{
System.err.println("ClassNotFoundException " + e.getMessage());
}

/*********Efectuando la conexión*********/
FT

try
{
A

con=DriverManager.getConnection(url, userName, pwd);


R
D

}catch(SQLException e)
{
System.err.println("SQLExeption " + e.getMessage());
}
}

public static void main(String args[])


{
Ejemplo1 apl=new Ejemplo1();
apl.establecerConexion("jdbc:odbc:Videos","sa","");
if (apl.con==null)
{
System.out.println("No hay conexion");
}
else
{
System.out.println("Correcto");
}
}
}

José Manuel Saavedra Rondo - 2`-


Ingeniero Informático
JDBC – Java Data Base Connectivity

2. Realizar Consultas
Veamos, ahora, como ejecutar consultas mediante sentencias SELECT desde nuestra aplicación en
JAVA.

El conjunto de resultados obtenido al ejecutar la consulta será asignada a un objeto de la clase


ResultSet del paquete java.sql de JAVA.
Además necesitaremos de un objeto Statement. Un objeto Statement envía la sentencia en SQL al
manejador de Base de Datos.

Inicialmente debemos declarar los siguientes objetos

Un objeto Statement que se crea con el metodo createStetatement de la interface Connection.


Un objeto ResultSet, es devuelto luego de ejecutarse el método executeQuery(“...”) de la interface
Statement.

Ejemplo 2 : Insertar el siguiente método en la aplicación anterior

public void hacerConsulta(String Cadena)


{
ResultSet rs=null;
Statement stm = null;
try
{
stm=con.createStatement();
rs=stm.executeQuery(Cadena);
}
catch(SQLException e)
{
System.err.println("SQLExeption " + e.getMessage());
FT

}
}
A
R
D

en el método main() añadiremos los siguiente

apl.hacerConsulta(“Select tituloP from Pelicula”)

Recorrer los Registro del ResultSet obtenido


Para recorrer los registro obtenidos utilizamos algunos métodos de la interface ResultSet como :
next(), para moverse a un siguiente registro o talvez, previous(), para retroceder.

Además es necesario capturar el valor de cada columna, en el registro actual, para poder reportarlo,
esto se logra utilizando los método getString(nombreColumna), getInt(nombreColumna),
getDouble(nombreColumna), getShort(nombreColumna), etc, de la interface ResultSet.

Ejemplo 3 : Método hacerConsulta() mejorado

public void hacerConsulta(String Cadena)


{
ResultSet rs=null;
Statement stm = null;
String titulo;
try
{
stm=con.createStatement();
rs=stm.executeQuery(Cadena);
}catch(SQLException e)
{
System.err.println("SQLExeption " + e.getMessage());
}

José Manuel Saavedra Rondo - 3`-


Ingeniero Informático
JDBC – Java Data Base Connectivity

int i=0;
try
{
while (rs.next())
{
titulo=rs.getString("tituloP");
System.out.println(titulo);
i++;
}
}catch(SQLException e)
{
System.err.println("SQLExeption " + e.getMessage());
}
System.out.println("Hay " + i+ “registro”);
}

3. Ejecutar Procedimientos Almacenados


Para ejecutar un procedimiento almacenado, debemos considerar si el procedimiento devolverá un
conjunto de resultados. Si así lo fuera, debemos utilizar un objeto ResultSet para recibir el resultado.
Por otro lado, debemos utilizar un objeto CallableStatement para poder enlazar la sentencia con el
manejador. Veamos :

ResultSet rs = null;
CallableStatement cst=null;

cst = con.prepareCall(“{call <nombre del procedimiento>}”);


rs = cst.executeQuery();
FT

y el objeto ResultSet se puede manejar como en el caso anterior.


A
R

Ejemplo 4: Implementemos el método ejecutarProcedimientoAlmacenado


D

public void ejecutarProcedimientoAlmacenado()


{
ResultSet rs=null;
CallableStatement stm = null;
String titulo = null;
try
{
stm=con.prepareCall("{call listarPeliculasGenero }");
stm.setString(1,"Drama");
rs=stm.executeQuery();
while (rs.next())
{
System.out.println("Pelicula Cómica ==>" + rs.getString("tituloP"));
}
}
catch(SQLException e)
{
System.err.println("SQLException111 " + e.getMessage());
}
}

José Manuel Saavedra Rondo - 4`-


Ingeniero Informático

You might also like