Cargando la página...

Usted está aquí:

JDBC y MySQL

Publicado por Sherekan el 27.08.2008 19:24:09 en Java - Nivel Básico

Avatar de Sherekan
Avatar de

Instalación y uso de JDBC con MySQL

Página 01 de 01 | Versión completa

Que es JDBC

JDBC (Java Database Connectivity) es un API que brinda un conjunto de interfaces y clases para acceder a cualquier motor de base de datos que lo implemente. JDBC se abstrae de los detalles específicos del motor, permitiendo así conectarse prácticamente de la misma manera a cualquier base de datos.
Las empresas, crean drivers para JDBC, para brindar una manera sencilla de conectarse a sus productos desde Java. En el caso de MySQL, este driver se llama Connector/J y está actualmente en su versión 5.1.
En este post voy a explicar como se usa JDBC con MySQL, por lo que vamos a necesitar MySQL y Connector/J. En caso de usar otro motor de base de datos, pueden leer igual el tutorial, ya que no varía demasiado.

Descarga e instalación

Descargamos el driver de JDBC para MySQL desde el sitio oficial de MySQL.
Lo descomprimimos y colocamos el jar en nuestra aplicación.

Ejemplo

Veamos un ejemplo sencillo. Vamos a conectarnos a la base de datos y hacer algunas consultas sencillas.

Importamos paquete sql

import java.sql.*;


Creamos conexión

Para conectarnos a la base de datos, tenemos que cargar el driver y crear un objeto Connection desde el DriverManager, pasándole la URL de conexión, el nombre de usuario y la contraseña de la base de datos.

Una URL de conexión tiene el siguiente formato:

jdbc:<subprotocol>://<hostname>:port/<db_name>


Que en este caso sería algo así:

jdbc:mysql://localhost:3306/my_db


Veamos un ejemplo:

Connection conexion = null;
try {
  Class.forName("com.mysql.jdbc.Driver");
  conexion = DriverManager.getConnection("jdbc:mysql://localhost/my_db:3306", "my_user", "my_pass");
} catch (SQLException e) {
  System.out.println("Error de MySQL: " + e.getMessage());
} catch (Exception e) {
  System.out.println("Error inesperado: " + e.getMessage());
}


Si ejecutamos la aplicación ahora, debería conectarse correctamente a la base de datos (sin ninguna salida en pantalla). En caso contrario, arrojaría alguna excepción.

Hacemos algunas consultas

Una vez realizada la conexión a la base de datos. Para hacer consultas tenemos que crear un objeto Statement desde el objeto Connection, de la siguiente manera:

Statement stmt = conexion.createStatement();


Y para ejecutar la consulta podemos usar alguno de los siguientes métodos del objeto Statement:

executeQuery()

Sirve para hacer consultas que devuelven resultados (generalmente consultas SELECT). Devuelve un objeto ResultSet con el resultado.

executeUpdate()

Sirve para hacer consultas del tipo INSERT, UPDATE, DELETE que no devuelven un resultado. Este método retorna un entero con la cantidad de registros afectados.

Veamos un ejemplo con executeUpdate():

try {
  Statement stmt = conexion.createStatement();

  int registrosAfectados = stmt.executeUpdate("UPDATE noticias SET activo = 0 WHERE id > 100");
  System.out.println("Registros afectados: " + registrosAfectados + " registros");

  registrosAfectados = stmt.executeUpdate("INSERT INTO usuarios (nombre, clave) VALUES ('Homero', '123')");
  System.out.println("Registros afectados: " + registrosAfectados+ " registros");
} catch (SQLException e) {
  System.out.println("Error de MySQL: " + e.getMessage());
} catch (Exception e) {
  System.out.println("Error inesperado: " + e.getMessage());
}


Ahora un ejemplo con executeQuery():

try {
  Statement stmt = conexion.createStatement();

  ResultSet resultado = stmt.executeQuery("SELECT * FROM usuarios");
  while (resultado.next()) {
      System.out.println("ID: " + resultado.getInt("id"));
      System.out.println("Nombre: " + resultado.getString("nombre"));
      System.out.println("Clave: " + resultado.getString("clave"));
  }
} catch (SQLException e) {
  System.out.println("Error de MySQL: " + e.getMessage());
} catch (Exception e) {
  System.out.println("Error inesperado: " + e.getMessage());
}


Como podrán ver, mediante un bucle recorremos el ResultSet, obteniendo los datos de cada registro, sacando los valores de sus campos mediante los métodos getInt() y getString().

Prepared statements

Si queremos usar prepared statements, creamos un objeto PreparedStatement desde el objeto Connection:

PreparedStatement preparedStatement = conexion.prepareStatement("UPDATE notas SET copete = ? WHERE posicion > ?");


Seteamos los datos al prepared statement así:

preparedStatement.setString(1, "blabla");
preparedStatement.setInt(2, 10);


Y finalmente ejecutamos el prepared statement, en este caso con executeUpdate():

preparedStatement.executeUpdate();


Ejemplo completo:

try {
  PreparedStatement preparedStatement = conexion.prepareStatement("UPDATE notas SET copete = ? WHERE posicion > ?");
  preparedStatement.setString(1, "blabla");
  preparedStatement.setInt(2, 10);
  preparedStatement.executeUpdate();
} catch (SQLException e) {
  System.out.println("Error de MySQL: " + e.getMessage());
} catch (Exception e) {
  System.out.println("Error inesperado: " + e.getMessage());
}

Página 01 de 01 | Versión completa

Descargas asociadas al artículo:

No existen descargas asociadas

Estadisticas:

Artículo leido 1107 veces con un puntaje de 10.00 pts

Comentarios.

Sus comentarios son importantes.

1
27
agosto
2008

Gastón aportó:

El SQL para crear las tablas de prueba están aqui
Quizá sería bueno que los coloques en una descarga del artículo.

Por cierto, muy buen artículo.
Saludos.

Debe estar identificado para agregar un comentario