Clase manejadora MySQL + Java

Standard

Java

Bueno les dejo una pequeña clase para para manejar nuestro MySQL que realiza por lo pronto tres metodos (o dos como quieran), la voy a ir mejorando pero para una conexión básica sirve perfecto…

Supondremos que el servidor de base de datos se encuentra activo y funcionando y que la base de datos ya fue creada. A continuación les dejo la tabla sobre la cual haremos la consulta.

Creacion de la tabla “pais”.

1
2
3
4
5
CREATE TABLE IF NOT EXISTS `pais` (
  `id` INT(3) UNSIGNED NOT NULL,
  `nombre varchar(30) NOT NULL,
  PRIMARY KEY  (`id`)
);

La cargamos con algunos datos para hacer la consulta…

1
2
3
4
5
6
7
8
9
10
11
INSERT INTO `pais` (`id`, `nombre`) VALUES
(1, 'Afganistán'),
(2, 'Albania'),
(3, 'Alemania'),
(4, 'American Samoa'),
(5, 'Andorra'),
(6, 'Angola'),
(7, 'Anguila'),
(8, 'Antigua and Barbuda'),
(9, 'Antillas Holandesas'),
(10, 'Antártida');

Listo ya tenemos nuestra base de datos con paises…

1
2
3
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
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
64
65
66
67
68
69
70
71
72
73
74
75
//Organizo estas clases en un paquete Controladores, si quieren obvien este paso...
package Controladores;
 
//Estas son clases de java que debemos importar que las usaremos mas adelante...
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
/**
 * 
 * @author Chuecko
 * @Site: http://www.zarpele.com.ar
 * @License: GPL
 * @Description: Conexión a base de datos MySQL
 *
 */
 
public class MySQL {
 
//Variable de tipo Connection...
Connection conexion = null;
 
//Datos de conexion
public String bd = "zarpele";
public String user = "user";
public String pass = "pass";
 //url no deben modificarlo, salvo que se conecten a una base de datos remota...
public String url = "jdbc:mysql://localhost/"+bd;
 
//Contructor...
public MySQL() throws InstantiationException, IllegalAccessException, ClassNotFoundException
{
 
   try {
      //Creando Instancia del driver
      java.lang.Class.forName("com.mysql.jdbc.Driver").newInstance();
      //Conectando con los datos de conexión
      this.conexion = DriverManager.getConnection(url,user,pass);
 
//      Datos del producto, version de mysql, etc. No es necesario por eso esta comentado...
//      DatabaseMetaData meta = (DatabaseMetaData) conexion.getMetaData();
//      System.out.println("El SGBD e s : ");
//      System.out.println(meta.getDatabaseProductName());
//      System.out.println(meta.getDatabaseProductVersion());
 
      System.out.println("Se ha conectado con exito!!!");
 
    } catch (SQLException ex) {
//   Aquí capturo la exepcion y muestos los mensajes y un error con el nombre de la base de datos
      System.out.println("Problemas al conectar con MySQL con base de datos :"+bd);
      System.out.println("SQLException : " + ex.getMessage());
      System.out.println("SQLState : " + ex.getSQLState());
      System.out.println("VendorError : " + ex.getErrorCode());
    }
 
}
 
//Pequeño método para realizar una consulta
public ResultSet consulta(String SQL) throws SQLException
{
//   Creamos un tipo Statement que maneja las consultas 
   Statement s = this.conexion.createStatement();
//   Retorno la consulta especifica...
    return  s.executeQuery (SQL);
 
}
 
//Cerramos la conexión previamente abierta...
public void cerrar() throws SQLException
{
this.conexion.close();
}
}

Listo esta clase nos ahorra muchas lineas de código cuando queramos traer datos desde la base de datos…

1
2
3
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
34
35
36
37
38
39
40
41
42
 
//Importamos la clase anterior y las que usamos en esta clase Main
import Controladores.MySQL;
import java.sql.ResultSet;
import java.sql.SQLException;
 
/**
 * 
 * @author Chuecko
 * @Site: http://www.zarpele.com.ar
 * @License: GPL
 * @Description: Ejemplo de consulta MySQL
 *
 */
public class Main {
 
    public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException {
 
//  Instanciamos la clase MySQL, que realiza la conexión 
    MySQL controladorDB=new MySQL();
 
//  Esta es la consulta en lenguaje SQL 
    String SQL=" SELECT * FROM pais";
 
//  Como ya vimos la consultas manejan un tipo ResultSet, le pasamos SQL y realizamos la consulta    
    ResultSet rs = controladorDB.consulta(SQL);
 
 
            // Se recorre el ResultSet, mostrando por pantalla los resultados.
            // Nótese que podemos usar el nombre de la column o un identificador empezando por 1
            while (rs.next())
            {
                System.out.println (rs.getInt ("id") + " " + rs.getString (2));
                System.out.println ("*******************");
            }
 
//  Cerramos la conexion
    controladorDB.cerrar();
 
}<pre>
 
}

Esto nos daría como resultado…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
run:
Se ha conectado con exito!!!
1 Afganistán
*******************
2 Albania
*******************
3 Alemania
*******************
4 American Samoa
*******************
5 Andorra
*******************
6 Angola
*******************
7 Anguila
*******************
8 Antigua AND Barbuda
*******************
9 Antillas Holandesas
*******************
10 Antártida
GENERACIÓN CORRECTA (tiempo total: 1 segundo)

Y listo, a esta altura de hacer consultas con base de datos, se supone que están utilizando algún IDE, en mi caso en este momento uso NetBeans, que es mas fácil implementar las excepciones además de infinitas ventajas (ya es hora que sueltes el Notepad, Gedit, Kedit, etc…).
No se olviden de importar las bibliotecas necesarios en este caso Driver MySQL JDBC.
Cualquier sugerencia o critica solo comenten….
Si te fue útil también comentá…

Saludos…

FB Comentarios

8 thoughts on “Clase manejadora MySQL + Java

  1. juanjo

    hola gracias por este tutorial me resulto de bastante ayuda, solo tengo una pregunta esta parte puede quedar de manera global en todo mi proyecto.

    MySQL controladorDB=new MySQL();

    Gracias

    • Hace bastante ya que no veo algo de Java, pero de poder se puede, no te lo recomiendo. Es recomendable abrir la conexión, realizar la consulta y cerrar la conexión, pensá en varios usuarios, si tenemos muchas conexiones abiertas en paralelo, haría que el sistema se vuelva lento como una tortuga…

      Gracias a ti por comentar…

  2. Cat

    Muchas gracias por el aporte me fue de mucha utilidad
    me preguntaba; para utilizar una operación transaccional que se necesita
    ¿esta bien colocar así el método?

    public void transaccion(String SQL) throws SQLException
    {
    Statement stmt=this.conexion.createStatement();
    stmt.executeUpdate(SQL);
    }

    gracias.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>