Bueno para este ejemplo usaremos:
- Java jdk 1.8
- Eclipse (En mi caso Spring Tool Suite que es casi lo mismo)
- Mysql 5.7
¿Que haremos?
Un CRUD sencillo...
- Actualizaremos una tabla
- Guardaremos registros en una tabla
- Leeremos los datos de una tabla
- Insertar información en la tabla
- Ejecutar un procedimiento almacenado.
Parece que esta publicación nos demandara un poco de café...
Antes de empezar ya debemos tener nuestra base de datos creada con nuestra tabla y SP
Nuestra base de datos para el ejemplo se llama: dbtest
Script para crear Tabla
Script para insertar datos a la tabla
Script para crear un SP 1
Script para crear un SP 2
Si te preguntas como crear la base de datos o ejecutar archivos .sql, entra AQUI
Primero crearemos un proyecto java desde cero.
Lo llamaremos JDBC_TEST
Nos queda así:
Click derecho sobre el proyecto y vamos a crear una carpeta "lib" para agregar la libreria jdbc para Mysql
Seleccionamos nuestro proyecto, y presionamos FINISH
Nos queda así:
Copiamos el .jar jdbc de Mysql (Click derecho, copiar). El driver se puede descargar AQUI
Luego vamos a nuestro proyecto y en la carpeta "lib" damos click derecho y pegamos.
Esto quedara así:
Ahora que tenemos el driver en nuestro proyecto, para poder usarlo, tenemos que hacer una referencia, es decir decirle a nuestro proyecto donde se encuentra dicha librería. Para ello seleccionamos nuestro proyecto, damos click derecho, y vamos a propiedades.
Luego en la parte izquierda seleccionamos "Java Build Path"; en la aprte del medio seleccionamos la pestaña "Libraries" y en la parte derecha presionamos el botón "Add JAR"
Nos aparece la siguiente pantalla, vamos a nuestro proyecto, a la carpeta lib, ahí seleccionamos al librería, y presionamos el botón "OK"
Finalmente se observara que ya realizamos al referencia de nuestra librería, por ultimo presionamos el botón "OK"
Nuestro proyecto queda algo así:
Ahora Crearemos una Clase: Main.
SELECT JDBC
Con esta sentencia nos conectaremos a:
base de datos: dbtest
usuario: root
Clave: 1234
La tabla que vamos a consultar se llama: auto
Las columnas que vamos a mostrar son: marca y placa (esto es el nombre de la columna de la tabla auto).
Recordemos para esto nuestra base de datos, tablas y stored procedure deben estar creados, estos e encuentra en una publicación anterior AQUI.
import java.sql.*; public class Main { public static void main(String[] args) { try { // 1. Obtener la conexion a la base de datos Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbtest", "root", "1234"); // 2. Crear un statement Statement smt = conn.createStatement(); // 3. Ejecutar un Query SQL ResultSet rs = smt.executeQuery("select * from auto;"); // 4. Visualizar el resultado en la pantalla. while(rs.next()){ System.out.println(rs.getString("marca") + " \t\t" + rs.getString("placa")); } } catch (SQLException e) { e.printStackTrace(); } } }
Si se ejecuta se muestra lo siguiente:
Consultamos la tabla en Mysql, lo mismo se visualiza.
INSERT JDBC
Para ello, empleamos el siguiente código.
import java.sql.*; public class MainInsert { public static void main(String[] args) { try { // 1. Obtener la conexion a la base de datos Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbtest", "root", "1234"); // 2. Crear un statement Statement smt = conn.createStatement(); // 3. Crear la sentencia SQL de insert String sql = "insert into auto(idAuto, Placa, Marca) values(5, 'UUU-111', 'Nisan');"; // 4. Ejecutar Query. smt.executeUpdate(sql); System.out.println("Se ingreso correctamente."); } catch (SQLException e) { e.printStackTrace(); } } }
El resultado es el siguiente. (Recordemos!, que la columna idAuto es clave primaria y nose puede repetir, la columna placa, también lo definimos como único, así que si se ejecuta dos veces esto seguro a la siguiente saldrá un error.)
Consultamos en nuestra tabla, se observa que si se inserto el registro anterior.
UPDATE JDBC
import java.sql.*; public class MainUpdate { public static void main(String[] args) { try { // 1. Obtener la conexion a la base de datos Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbtest", "root", "1234"); // 2. Crear un statement Statement smt = conn.createStatement(); // 3. Crear la sentencia SQL de update String sql = "update auto set modelo = 'Futurista' where idAuto = 5;"; // 4. Ejecutar Query. smt.executeUpdate(sql); System.out.println("Se actualizo correctamente."); } catch (SQLException e) { e.printStackTrace(); } } }
Se visualiza el resultado siguiente.
Se consulta en la tabla en Mysql, se observa que si fue actualizado, el valor.
DELETE JDBC
Para borrar, emplearemos el siguiente código.
import java.sql.*; public class MainDelete { public static void main(String[] args) { try { // 1. Obtener la conexion a la base de datos Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbtest", "root", "1234"); // 2. Crear un statement Statement smt = conn.createStatement(); // 3. Crear la sentencia SQL de delete String sql = "delete from auto where idAuto = 1;"; // 4. Ejecutar Query. int filasAfectadas = smt.executeUpdate(sql); System.out.println("Se elimino: " + filasAfectadas + " filas."); System.out.println("Se elimino correctamente."); } catch (SQLException e) { e.printStackTrace(); } } }
El resultado es:
Consultamos en nuestra tabla en Mysql, se elimino el registro con idAuto = 1
PREPARED STATEMENT JDBC
¿Que esto?, bueno otra forma de realizar un select, pero con filtros "where". Para ello emplearemos el siguiente código:
import java.sql.*; public class MainPrepared { public static void main(String[] args) { try { // 1. Obtener la conexion a la base de datos Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbtest", "root", "1234"); // 2. Preparar un statement PreparedStatement smt = conn.prepareStatement("select * from auto where Marca = ? and color = ?"); // 3. Enviar los parametros smt.setString(1, "KIA"); smt.setString(2, "BLANCO"); // 4. Ejecutar Sentencia SQL ResultSet rs = smt.executeQuery(); // 5. Mostrar informacion while(rs.next()){ System.out.println(rs.getString("marca") + " \t\t" + rs.getString("placa")); } } catch (SQLException e) { e.printStackTrace(); } } }
Se visualiza el siguiente código:
EJECUTAR UN STORED PROCEDURE JDBC
Para ejecutar un procedure, realizaremos el siguiente código, este es un stored procedure(SP) que admite un valor de entrada.
import java.sql.*; public class MainStoreProcedure { public static void main(String[] args) { try { // 1. Obtener la conexion a la base de datos Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbtest", "root", "1234"); // 2. Preparar un CallableStatement CallableStatement smt = conn.prepareCall("call prcAutos(?);"); // 3. Enviar los parametros smt.setString(1, "KIA"); // 4. Ejecutar el procedimiento almacenado. ResultSet rs = smt.executeQuery(); // 5. Mostrar informacion while(rs.next()){ System.out.println(rs.getString("Marca") + " \t\t" + rs.getString("Modelo")); } } catch (SQLException e) { e.printStackTrace(); } } }
Podemos visualizar:
EJECUTAR STORED PROCEDURE PERO CON SALIDA DE DATOS JDBC
import java.sql.*; public class MainStoreProcedureOut { public static void main(String[] args) { try { // 1. Obtener la conexion a la base de datos Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbtest", "root", "1234"); // 2. Preparar un CallableStatement CallableStatement smt = conn.prepareCall("call prcContarAutosMarca(?, ?);"); // 3. Enviar los parametros smt.setString(1, "KIA"); smt.registerOutParameter(2, Types.INTEGER); // 4. Ejecutar el procedimiento almacenado. smt.executeQuery(); // 5. Mostrar informacion int cantidad = smt.getInt(2); System.out.println("Cantidad de autos: " + cantidad); } catch (SQLException e) { e.printStackTrace(); } } }
Podemos visualizarlo en pantalla así:
.............. y Fin :) Acabamos Hemos, cubierto todos los puntos..¿eso es todo?, así es, es lo básico.
No hay comentarios:
Publicar un comentario