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