Camino Libre
martes, 07 de septiembre de 2010
Welcome! Guest
Inicio arrow Manuales arrow JAVA arrow JAVA Web arrow 01.- Conectando JAVA con MySql usando JDBC
01.- Conectando JAVA con MySql usando JDBC PDF Imprimir E-Mail
Escrito por Administrator   
viernes, 27 de abril de 2007

Conectando JAVA con MySql usando JDBC.

En esta sección mostraremos como acceder a una base de datos usando JDBC.

Introducción.

JDBC es un API de Java para acceder a manejadores de bases de datos, y prácticamente a cualquier tipo de dato tabular. El API JDBC consiste de un conjunto de clases e interfaces que permiten a cualquier programa Java acceder a sistemas de bases de datos de forma homogénea. En otras palabras, con el API JDBC no es necesario escribir un programa para accesar a Sybase, otro programa para accesar a Oracle, y otro programa para accesar a MySQL; con esta API, se puede crear un sólo programa que sea capaz de enviar sentencias SQL a la base de datos apropiada.

Nuestra aplicación Java debe tener acceso a un controlador (driver) JDBC adecuado. Este controlador es el que implementa la funcionalidad de todas las clases de acceso a datos y proporciona la comunicación entre el API JDBC y la base de datos real. De una manera muy simple.

Entonces, para efectuar nuestro ejemplo de conexión necesitaremos:

  • El servidor MySql correctamente instalado
  • El conector correctamente instalado.

Empezemos con el servidor, en este caso podemos levantarlo fácilmente con un programa como EasyPhp, basta con instalarlo he iniciar el programa para tener un servidor MySql corriendo, podremos administrarlo con la interfaz phpMyAdmin en la dirección local:

http://localhost/mysql/

Ahora el conector.

¿Dónde obtenerlo? En la página oficial de MySql encontraremos diferentes versiones, en los ejemplos utilicé la versión 3 del conector que puedes descargar en un paquete incluyendo el código aquí, también puedes encontrar el archivo jar desempaquetado en la carpeta de los códigos de éste curso.

¿Cómo instalarlo? Del sitio descargamos un zip o un tar.gz, en ambos casos necesitaremos descomprimir el archivo jar que viene dentro, en este caso se llama

mysql-connector-java-3.0.17-ga-bin.jar

A continuación colocamos el archivo en algún lugar de nuestra computadora, y agregamos la ruta al CLASSPATH.
Por ejemplo, en mi caso el valor del CLASSPATH quedó así:

CLASSPATH="C:\Archivos de programa \Java\jre1.6.0_01\lib\mysql-connector-java-3.0.17-ga-bin.jar";

El ejemplo más sencillo de una conexión:

Conexion Sencilla
  1. import java.sql.*;
  2.  
  3. public class Conexion {
  4. public static void main(String args[]) {
  5. try {
  6. //Cargamos el puente JDBC => Mysql
  7. System.out.println("Intentando cargar el conector...");
  8. Class.forName("com.mysql.jdbc.Driver");
  9. //Intentamos conectarnos a la base de Datos en este caso una base llamada temp
  10. System.out.println("Conectando a la base...");
  11. Connection con = DriverManager.getConnection(
  12. "jdbc:mysql://localhost/temp", "root", ""
  13. );
  14. System.out.println("Conexion a BD establecida");
  15. } catch(SQLException ex) {
  16. System.out.println("Error de mysql");
  17. } catch (ClassNotFoundException e) {
  18. e.printStackTrace();
  19. } catch(Exception e) {
  20. System.out.println("Se produjo un error inesperado: "+e.getMessage());
  21. }
  22. }
  23. }
  24. /* Debe producir una salida como esta:
  25. Intentando cargar el conector...
  26. Conectando a la base...
  27. Conexion a BD establecida
  28. */
 
 

Trabajemos con datos almacenados. Creamos una base de datos llamada "prueba" y le creamos una tabla con el siguiente código:

 CREATE TABLE `usuarios` ( 
  `login` varchar(10) NOT NULL default '',
 `password` varchar(10) NOT NULL default '',
  PRIMARY KEY (`login`)
)
INSERT INTO `usuarios` VALUES ('adrian', 'adrian');
INSERT INTO `usuarios` VALUES ('ernesto', 'ern123');
INSERT INTO `usuarios` VALUES ('juan', 'jua123');
INSERT INTO `usuarios` VALUES ('pedro', 'ped123');

Ahora ejecutemos el siguiente programa que usa la sentencia SQL llamada SELECT:

ConexionSelect.java
  1. import java.sql.*;
  2. import java.io.*;
  3.  
  4. public class ConexionSelect {
  5. public static void main(String args[]) {
  6. try {
  7. Class.forName("com.mysql.jdbc.Driver");
  8. Connection con = DriverManager.getConnection(
  9. "jdbc:mysql://localhost/prueba", "root", ""
  10. );
  11. System.out.println("Conexion a BD establecida");
  12. Statement stmt = con.createStatement();
  13. ResultSet rs=stmt.executeQuery("SELECT * FROM usuarios");
  14. System.out.println("Login\tPassword");
  15. while(rs.next()) {
  16. System.out.println(rs.getString("login")+"\t"+rs.getString("password"));
  17. }
  18. } catch(SQLException ex) {
  19. System.out.println("Error de mysql");
  20. } catch(Exception e) {
  21. System.out.println("Se produjo un error inesperado: "+e.getMessage());
  22. }
  23. }
  24. }
  25. /*
  26. Este programa nos arroja una salida como esta:
  27. Conexion a BD establecida
  28. Login Password
  29. adrian adrian
  30. ernesto ern123
  31. juan jua123
  32. pedro ped123
  33. */
 

El siguiente programa que usa la sentencia SQL llamada INSERT:

ConexionInsert.java
  1. import java.sql.*;
  2. import java.io.*;
  3.  
  4. public class ConexionInsert {
  5. public static void main(String args[]) {
  6. try {
  7. Class.forName("com.mysql.jdbc.Driver");
  8. Connection con = DriverManager.getConnection(
  9. "jdbc:mysql://localhost/prueba", "root", ""
  10. );
  11. System.out.println("Conexion a BD establecida");
  12. Statement stmt = con.createStatement();
  13. int respuesta=stmt.executeUpdate(" INSERT INTO usuarios VALUES('"
  14. + args[0] + "','"
  15. + args[1] + "') " );
  16. if(respuesta==1){
  17. System.out.println("Se agregó el registro de manera exitosa");
  18. }
  19. else{
  20. System.out.println("Ocurrio un problema al agregar el registro");
  21. }
  22. } catch(SQLException ex) {
  23. // Mostramos toda la informacion sobre el error disponible
  24. System.out.println( "Error: SQLException" );
  25. while (ex != null) {
  26. System.out.println ("SQLState: " + ex.getSQLState ());
  27. System.out.println ("Mensaje: " + ex.getMessage ());
  28. System.out.println ("Vendedor: " + ex.getErrorCode ());
  29. ex = ex.getNextException();
  30. System.out.println ("");
  31. }
  32. } catch(Exception e) {
  33. System.out.println("Se produjo un error inesperado: "+e.getMessage());
  34. }
  35. }
  36. }
  37. /*
  38. Para ejecutar este programa hacemos algo como esto: D:\>java ConexionInsert julio jul123
  39. Y debe arrojar esto:
  40. Conexion a BD establecida
  41. Se agrego el registro de manera exitosa
  42. */
 
 

Modificado el ( viernes, 14 de diciembre de 2007 )
 
Siguiente >

Otros sitios de computación

Sherekan
Planeta Moderno
El Andariego