You are on page 1of 14

CONECTAR LA BASE DE DATOS

Este artculo est orientado a la aplicacin e implementacin de una


clase en Java, que nos permitir conectar nuestra aplicacin con
una Base de datos, e igualmente se llevar a cabo un test de conexin
a travs de un pequeo fragmento de cdigo el cual se colocar dentro
del mtodo de un botn:

Clase para conectar con nuestra Base de datos (ConexionMySQL.Java):


package Metodos;


import java.sql.*;
import javax.swing.JOptionPane;


public class ConexionMySQL {

public String db = "bdcontactos";
public String url = "jdbc:mysql://localhost/"+db;
public String user = "root";
public String pass = "123";


public Connection Conectar(){

Connection link = null;

try{

Class.forName("org.gjt.mm.mysql.Driver");

link = DriverManager.getConnection(this.url, this.user,
this.pass);

}catch(Exception ex){

JOptionPane.showMessageDialog(null, ex);

}


return link;

}

}




Cdigo para el Test de Conexin:

private void btnProbarconexionActionPerformed(java.awt.event.ActionEvent
evt) {


ConexionMySQL mysql = new ConexionMySQL();

java.sql.Connection cn= mysql.Conectar();


if(cn!=null){

JOptionPane.showMessageDialog(null, "Conectado");

try{

cn.close();

}catch(SQLException ex){

System.out.println("Error al desconectar "+ex);

}

}


}





Instrucciones y Recomendaciones

1- Primero que todo debemos descargar el archivo .jar conocido
como MySQL Connector y aadirlo a las libreras de nuestro proyecto;
luego crearemos en nuestro proyecto, un paquete al cual llamaremos
"Metodos", y dentro de este, crearemos una clase la cual llamaremos
"ConexionMySQL".

2- Copia y pega el cdigo resaltado en amarillo, despus de la lnea de
cdigo "package Metodos;" y sobre la lnea de cdigo "public class ConexionMySQL {",
este fragmento de cdigo se utiliza para importar las Clases y/o libreras necesarias
para poder trabajar con ciertas funcionalidades y mtodos de nuestra Clase:
import java.sql.*;
import javax.swing.JOptionPane;

3- Ahora copia y pega el cdigo resaltado en azul, dentro de la Clase
"public classConexionMySQL {}"; es decir, debe quedar rodeado por los
corchetes ({}) que limitan dicha Clase.

4- La primera parte de este cdigo resaltado en azul, consiste en crear 4
variables de tipo String y con la propiedad public. En la primera variable
llamada "db", guardamos el nombre de la Base de datos a la cual nos
queremos conectar; en la segunda variable url, guardaremos la ruta de
donde se encuentra ubicada nuestra Base de datos, si nos damos cuenta
deberemos emplear la api "jdbc:mysql" lo cual permite indicar que
queremos conectar nuestra aplicacin Java con una Base de datos en
MySQL, adems debemos consignar la direccin de la mquina que
contiene la Base de datos, en este caso como trabajaremos en una sola
mquina colocamos "localhost", en el caso dado que trabajemos de
forma remota debemos reemplazar este valor por la direccin IP
(ej. 192.168.1.2) de la mquina a la cual necesitamos conectarnos, en
esta misma variable concatenamos la variable que instanciamos al
principio "+db"; luego la tercera y cuarta variable "user" y "pass",
corresponden al usuario y la clave para poder tener acceso a la Base de
datos.
public String db = "bdcontactos";
public String url = "jdbc:mysql://localhost/"+db;
public String user = "root";
public String pass = "123";

5- Lo siguiente es un mtodo, este contiene la propiedad "public", y devolver un valor
de tipo "Connection", que en otras palabras sera la conexin con nuestra Base de
datos; y se le ha asignado a este mtodo el nombre de "Conectar":

public Connection Conectar(){}

6- Ahora instanciaremos un objeto de tipo "Connection", al cual
asignaremos el valor "null". Esto ir dentro del mtodo del punto
anterior:
Connection link = null;

7- Proseguiremos a crear un bloque "try-catch", debido a que el cdigo
que hemos de emplear podra producir una excepcin y/o error. Este
bloque ir dentro del mtodo mencionado en el punto 5:
try{

}catch(Exception ex){


}


8- En esta lnea de cdigo lo que haremos ser cargar la Clase "Driver",
que se encuentra ubicada dentro del ".jar" MySQL Connector que
agregamos a nuestras libreras. Esta lnea ir dentro del "try{}" del
punto anterior:
Class.forName("org.gjt.mm.mysql.Driver");

9- Ahora utilizando el mtodo DriverManager.getConnection, y
empleando las variables que instanciamos al inicio de esta Clase,
obtendremos la conexin con nuestra Base de datos, y procederemos
administrarla y almacenarla en el objeto tipo Connection instanciado al
principio del mtodo "Conectar". Esta lnea de cdigo ir dentro del
"try{}" del punto 7.
link = DriverManager.getConnection(this.url, this.user, this.pass);


10- En el caso dado de que ocurra un error al tratar de conectarnos con
nuestra Base de datos, procederemos a mostrar dicha excepcin a
travs de una pequea ventana, usando el componente JOptionPane.
Esta parte ir dentro del "catch(){}" del punto 7:
JOptionPane.showMessageDialog(null, ex);

11- Por ltimo retornaremos la conexin obtenida, la cual podra ser
exitosa o nula. Esta lnea ir por fuera del try-catch, pero dentro del
mtodo Conectar:
return link;

12- En cuanto al cdigo para el test de conexin, copia y pega el cdigo
resaltado enverde, dentro del evento y/o mtodo del botn de un
formulario de tu proyecto.

13- En las dos primeras lneas de cdigo, lo que hacemos es instanciar
un objeto de nuestra Clase ConexionMySQL.java y luego en un objeto
tipo Connection, administramos y/o capturamos la conexin que se nos
devuelve al llamar el mtodo Conectar de nuestra Clase mencionada
anteriormente:
ConexionMySQL mysql = new ConexionMySQL();

java.sql.Connection cn= mysql.Conectar();

14- En el resto de cdigo, empleamos un condicional "if", en el cual
verificamos que no se nos devuelva una conexin nula, si se cumple
esta condicin, mostraremos una ventana (JOptionPane) en la cual
mostraremos el mensaje "Conectado"; luego dentro de un try-catch,
procedemos a cerrar la conexin con la Base de datos, y en dado caso
de que ocurra una excepcin a la hora de realizar la desconexin,
mostraremos dicho error por consola:
if(cn!=null){

JOptionPane.showMessageDialog(null, "Conectado");

try{

cn.close();

}catch(SQLException ex){

System.out.println("Error al desconectar "+ex);

}

}


15- Ahora slo basta con ejecutar tu proyecto y hacer las respectivas
pruebas.

16- Si deseas saber cmo conectar una aplicacin hecha en Java
con una Base de datos, usando un entorno grfico como Netbeans
IDE, puedes visitar el siguiente enlace:

Curso de JAVA: Cmo conectar JAVA con una Base de datos? (Forma bsica)

ESTABLECER CONEXIN CON LA BASE DE DATOS
Para realizar la conexin a base de datos desde java necesitamos hacer uso de JDBC. Las bases de datos que
deseemos conectar debern proveernos el driver JDBC en un empaquetado JAR para aadirlo a las libreras
del proyecto.
Deberemos conseguir la librera de acuerdo a la versin de la Base de Datos al cual deseemos conectarnos. Es
posible que su IDE reconozca la existencia del driver si la base de datos ha sido instalada en el mismo
ordenador junto con sus libreras, solo hara falta aadirlo a la lista de libreras que se usarn en el proyecto,
por ejemplo en NetBeans se podra ir al directorio Libraries del Proyecto, hacer clic derecho sobre el y elegir
Add Library y en la lista podra encontrase la que necesitemos, o si queremos agregarla manualmente Add
JAR/Folder y seleccionar desde la direccin donde lo tenemos almacenado.
Add Library:

Add JAR/Folder:

Una vez agregada la librera, vamos a realizar el cdigo de conexin, el cual nos debe presentar una clase con
2 mtodos que a mi parecer no deberan faltar. Debera existir una funcin(Las funciones retornan datos) que
nos retorne un CachedRowSet que es algo similar al ResultSet que no podemos retornar mientras el Statement
est sin cerrar, pero es obvio que por seguridad deberemos tener todas las conexiones cerradas, por eso no
retornamos directamente el ResultSet y hacerlo sin cerrar las conexiones sera de muy mala prctica. En
cambio, el CachedRowSet almacena todos los registros y podemos manipularla con las conexiones cerradas,
cosa que no podemos hacer con los ResultSets, ya que stos necesitan al Statement Abierto, y el Statement a
su vez necesita la conexin abierta. Por otro lado deberamos tener un procedimiento(No retorna ningn
dato), no retorna nada ya que se encargar de realizar operaciones unidireccionales.
En conclusin, usamos la Funcin cuando usemos Sentencias DML SELECT incluyendo las Funciones y usar el
Procedimiento cuando usemos INSERT, DELETE O UPDATE, incluyendo los StoreProcedures(Procedimientos
Almacenados); aunque podemos conocer algunas bases de datos que permitan retornar datos desde
StoreProcedures, lo ideal seria hacerlo desde funciones, manteniendo cada uno para su propsito. Del mismo
modo, habrn podido darse cuenta que ambos mtodos reciben una variable String como parmetro, sta es
nada menos que la Sentencia DML que deseamos ejecutar.

1
2
3
package beastieux.gui;

import java.sql.Connection;
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import javax.sql.rowset.CachedRowSet;
import com.sun.rowset.CachedRowSetImpl;
/**
*
* @author beastieux
*/
public class Ejm12_ConectarDataBase {

public CachedRowSet Function(String sql)
{
try
{
Class.forName("Driver");

String url = "jdbc:motor:servidor:puerto/basededatos";
Connection con = DriverManager.getConnection(url,
"usuario","contrasea");
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;
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

}
catch(Exception e)
{
System.out.println(e.getMessage());
}

return null;
}

public void StoreProcedure(String sql)
{

try
{
Class.forName("Driver");

String url = "jdbc:motor:servidor:puerto/basededatos";
Connection con = DriverManager.getConnection(url,
"usuario","contrasea");
Statement s = con.createStatement();

s.execute(sql);

s.close();
con.close();

}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
64
65
66
67
68
}
Como habrn podido apreciar en el cdigo, el manejo de excepciones es relativamente sencilla, lo ideal sera
especificar las excepciones por cada conexion, statement y resultset para de esa manera asegurarnos que
permanezcan cerradas al finalizar la ejecucin o aun cuando existieran errores; de igual manera sera muy til
obligar a cerrar las conexiones desde dentro de una clausula finally anexada al try catch.
Por ltimo la url de conexin jdbc:motor:servidor:puerto/basededatos, variar a continuacin de jdbc,
segn el motor de base de datos al que deseemos conectarnos (PostgreSQL, MySQL, Oracle, Derby, etc) , la
direccin IP del servidor, el puerto y finalmente el nombre de la base de datos al que queramos acceder.
En los prximos posts se presentar las conexiones a las diversas bases de datos y la explicacin de como usar
la clase creada.
Cdigo Java Conexin a Base de Datos PostgreSQL
Cdigo Java Conexin a Base de Datos MySQL
Cdigo Java Conexin a Base de Datos Apache Derby (Embebida y Cliente Servidor)













Conexin a una base de datos en Java
El objetivo de nuestro ejemplo es el de ver qu tenemos que hacer para crear una conexin sobre una base de datos
y ejecutar una consulta.
Las tres clases que manejaremos en nuestro ejemplo sern Connection para realizar la conexin a la base de datos,
PreparedStatement que ser la que contenga la sentencia SQL y ResultSet que ser la que contenga el resultado.
Lo primero que tenemos que saber para realizar la conexin a la base de datos es donde se encuentra dicha base de
datos. Para hacer referencia a la base de datos lo podemos hacer directamente mediante la IP o, por ejemplo,
mediante una referencia ODBC.
As, podramos tener referencias como:
jdbc:db2:10.0.1.10:50000/BD1 (referencia directa)
jdbc:odbc:BD1 (referencia por ODBC)
Una vez conocemos la localizacin de nuestra base de datos debemos de saber el nombre de la clase que tiene
implementada la conexin a la base de datos. Es lo que llamamos driver. Dependiendo de la forma en la que este
implementado el driver, este, recibir el apelativo de driver tipo1, tipo2, tipo3 o tipo4.
Si nos ponemos a escribir cdigo, lo primero que debemos de hacer es instanciar la clase del driver.
Class.forName(sDriver).newInstance();
Dicha clase ser la que nos proporcione una conexin a la base de datos, y como bien hemos dicho, la conexin la
guardaremos en una instancia de la clase Connection.
con = DriverManager.getConnection(sURL);
Un vez que hemos conseguido una conexin a la base de datos lo siguiente ser el preparar una sentencia SQL en
un PreparedStatement. No haremos nada complicado con el SQL, algo as como...
stmt = con.prepareStatement("SELECT deporte FROM deportes");
Construida nuestra sentencia, realizamos la ejecucin de la misma. Y el resultado al ResultSet.
rs = stmt.executeQuery();
Un ResultSet no deja de ser una especie de matriz (filas x columnas) que deberemos de recorrer mediante el
movimiento de un cursor. Y la forma ms fcil en Java es mediante un bucle while. Y para acceder a las columnas
bastar con utilizar los mtodos getXXX del ResultSet: getString() para las cadenas de texto, getDouble() para los
decimales, getDate() para las fechas,......
while (rs.next())
System.out.println (rs.getString("deporte"));
Una vez que hemos finalizado el cometido de nuestro ejercicio deberemos de cerrar las conexiones a la base de
datos. Para ello invocaremos el mtodo close() sobre los tres objetos mencionados.
Y en todo este proceso, las excepciones. No nos debemos de olvidar de ellas. A tal respecto deberemos de ejecutar
nuestro cdigo en un bloque try-catch que controle la SQLException. Excepcin comn que se produce en el acceso
a la base de datos

CONECTAR A BASE DE DATOS CON JAVA Y
NETBEANS
Publicado el 3 marzo, 2014 por admin
Empezamos por descargar el conector MySQL para Java desde su stio
web: conector MySQL. Una vez que hemos descargado el fichero .zip
correspondiente a nuestra plataforma lo descomprimimos en el equipo y buscamos
dentro de la carpeta principal un archivo llamado mysql-connector con
extensin .jar.
Ahora tenemos que agregar este archivo jar a nuestra aplicacin de NetBeabs, para
ello hacemos Click derecho sobre el nombre del proyecto y seleccionamos
propiedades. En la ventana siguiente seleccionamos en libreras y posteriormente
pulsamos en el botn >Add Jar/Folder. Finalmente accedemos a la localizacin
del connector que descargamos anteriormente y le damos a OK.
Despus de importar el conector ya estamos preparados para realizar la conexin a
una base de datos MySQL. Aunque antes de continuar necesitamos un servidor y un
gestor de base de dados. Para este ejemplo yo voy a utilizar un servidor local.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ConectarDB {


public static void main(String[] args) {
Connection con;
ResultSet rs;

try {
Class.forName("com.mysql.jdbc.Driver");
con =
DriverManager.getConnection("jdbc:mysql://127.0.0.1/java1",
"root", "");

// Creamos un Statement para poder hacer peticiones a la bd
Statement stat = con.createStatement();

// Insertar 2 filas en la tabla Motor
String insertar = "INSERT INTO Motor VALUES
('Ferrari','F1','600')";
stat.executeUpdate(insertar);
insertar = "INSERT INTO Motor VALUES ('Porche','GT3
RS','450')";
stat.executeUpdate(insertar);

// Seleccionar todos los datos ordenados por potencia
String seleccionar = "SELECT * FROM Motor ORDER BY Potencia";
rs = stat.executeQuery(seleccionar);

// Recorrer todas las filas de la tabla Motor
System.out.println("Marca\tModelo\tPotencia\n");
while (rs.next()) {
System.out.println(rs.getString("Marca") + "\t"+
rs.getString("Modelo") + "\t"+
rs.getString("Potencia") + "\n");
}
} catch (ClassNotFoundException | SQLException e) {
System.out.println("Error: " + e.getMessage());

}

}
}

You might also like