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):
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.
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());