03 abril, 2021

JAVA - Realizar una conexión JDBC a una base de datos MySQL 8

¡Buen día. coders! El siguiente ejercicio no los envía Pedro Oliveira desde Facebook. Diseñe un programa en java que permita conectarse a una base de datos MySQL y muestre los datos de la tabla producto. 


MySQL

  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
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

DROP SCHEMA IF EXISTS `KARDEX` ;
CREATE SCHEMA IF NOT EXISTS `KARDEX` DEFAULT CHARACTER SET latin1 COLLATE latin1_spanish_ci ;
USE `KARDEX` ;

-- -----------------------------------------------------
-- Table `KARDEX`.`PRODUCTO`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `KARDEX`.`PRODUCTO` (
  `COD_PROD` INT(5) NOT NULL ,
  `DESC_PROD` VARCHAR(45) NOT NULL ,
  `CATE_PROD` VARCHAR(45) NOT NULL ,
  `MARCA_PROD` VARCHAR(45) NOT NULL ,
  `PRE_PROD` DOUBLE NOT NULL ,
  PRIMARY KEY (`COD_PROD`) )
ENGINE = InnoDB;

CREATE UNIQUE INDEX `COD_PROD_UNIQUE` ON `KARDEX`.`PRODUCTO` (`COD_PROD` ASC) ;


-- -----------------------------------------------------
-- Table `KARDEX`.`PROVEEDOR`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `KARDEX`.`PROVEEDOR` (
  `COD_PROVE` INT(5) NOT NULL ,
  `RUC_PROVE` INT NOT NULL ,
  `NOM_PROVE` VARCHAR(45) NOT NULL ,
  `APE_PROVE` VARCHAR(45) NOT NULL ,
  `TELF_PROVE` INT(7) NOT NULL ,
  `CORREO_PROVE` VARCHAR(45) NOT NULL ,
  PRIMARY KEY (`COD_PROVE`) )
ENGINE = InnoDB;

CREATE UNIQUE INDEX `COD_PROVE_UNIQUE` ON `KARDEX`.`PROVEEDOR` (`COD_PROVE` ASC) ;

CREATE UNIQUE INDEX `RUC_PROVE_UNIQUE` ON `KARDEX`.`PROVEEDOR` (`RUC_PROVE` ASC) ;


-- -----------------------------------------------------
-- Table `KARDEX`.`EMPLEADO`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `KARDEX`.`EMPLEADO` (
  `COD_EMPLE` INT(5) NOT NULL ,
  `NOM_EMPLE` VARCHAR(45) NOT NULL ,
  `APE_EMPLE` VARCHAR(45) NOT NULL ,
  `TELF_EMPLE` INT(7) NOT NULL ,
  `FECHA_INGRE_EMPLE` VARCHAR(45) NOT NULL ,
  `TIENDA_EMPLE` VARCHAR(45) NOT NULL ,
  `TIPO_EMPLE` VARCHAR(45) NOT NULL ,
  `PASSWORD` INT(5) NOT NULL ,
  PRIMARY KEY (`COD_EMPLE`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1
COLLATE = latin1_spanish_ci;

CREATE UNIQUE INDEX `COD_EMPLE_UNIQUE` ON `KARDEX`.`EMPLEADO` (`COD_EMPLE` ASC) ;

CREATE UNIQUE INDEX `PASSWORD_UNIQUE` ON `KARDEX`.`EMPLEADO` (`PASSWORD` ASC) ;


-- -----------------------------------------------------
-- Table `KARDEX`.`ALMACEN`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `KARDEX`.`ALMACEN` (
  `ID_ALMA` INT(5) NOT NULL ,
  `COD_PROD` INT(5) NOT NULL ,
  `COD_PROVE` INT(5) NOT NULL ,
  `STOCK` INT(11)  NOT NULL ,
  PRIMARY KEY (`ID_ALMA`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1
COLLATE = latin1_spanish_ci;

CREATE UNIQUE INDEX `ID_ALMA_UNIQUE` ON `KARDEX`.`ALMACEN` (`ID_ALMA` ASC) ;


-- -----------------------------------------------------
-- Table `KARDEX`.`KARDEX`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `KARDEX`.`KARDEX` (
  `NUM_KARDEX` INT(5) NOT NULL ,
  `COD_EMPLE` INT(5) NOT NULL ,
  `MOVI_KARDEX` VARCHAR(45) NOT NULL ,
  `OPERA_KARDEX` VARCHAR(45) NOT NULL ,
  `DOCU_KARDEX` VARCHAR(45) NOT NULL ,
  `COD_PROD` INT(5) NOT NULL ,
  `COD_PROVE` INT(5) NOT NULL ,
  `FECHA_KARDEX` VARCHAR(45) NOT NULL ,
  `CANT_KARDEX` INT(11)  NOT NULL ,
  PRIMARY KEY (`NUM_KARDEX`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1
COLLATE = latin1_spanish_ci;

CREATE UNIQUE INDEX `NUM_KARDEX_UNIQUE` ON `KARDEX`.`KARDEX` (`NUM_KARDEX` ASC) ;



SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

JAVA

 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
76
77
78
79
80
81
82
83
84
85
86
87
88
import java.sql.*;

public class ConexionBaseDatos {

	// Método principal que lanza la aplicación
	public static void main(String[] args) {
		// Instanciamos la clase Conexion
		Conexion conexion = new Conexion();
		// Declarammos la siguientes variables locales
		Connection con = null;
		Statement stmt = null;
		ResultSet rs = null;
		try {
			// Establecemos la conexión a la base de datos
			con = conexion.conectar();
			// Creamos un objetos statement para enviar sentencias sql a la base de datos
			stmt = con.createStatement();
			// Ejecutamos la instrucción SQL dada, que devuelve un único objeto ResultSet
			rs = stmt.executeQuery("SELECT * FROM producto");
			System.out.printf("%n%-10s%-25s%-15s%-15s%-15s%n", 
					"Código", "Descripción", "Categoría", "Marca", "Precio");
			System.out.println("-".repeat(75)); // Repetir '-' 75 veces
			// Recorremos el objeto ResultSet que contiene la información de la tabla consultada
			while (rs.next()) { // Mientras la llamada al método next() devuelva verdadero
				// Extraemos los valores de las columnas de la fila actual y lo imprimimos en consola
				int codigo = rs.getInt(1);
				String descripcion = rs.getString(2);
				String categoria = rs.getString(3);
				String marca = rs.getString(4);
				double precio = rs.getDouble(5);
				System.out.printf("%-10s%-25s%-15s%-15s%-15s%n", 
						codigo, descripcion, categoria,marca, precio);
			}
		} catch (SQLException e) { // Atrapamos la excepción que puede lanzar el código anterior
			System.out.println("Error en la ejecución: " + e.toString());
			e.printStackTrace();
		} finally { // Al finalizar
			try {
				// Cerramos las posibles conexiones abiertas
				if (rs != null)
					rs.close();
				if (stmt != null)
					stmt.close();
				if (con != null)
					con.close();
			} catch (Exception e) {
				System.out.println("Error cerrando conexiones: " + e.toString());
			}
		}
	}

}

// Clase conexión
class Conexion {
	// Definimos las propiedades de conexión a la base de datos
	// Serán estáticas final para que no cambien su valor
	private static final String driver = "com.mysql.cj.jdbc.Driver";
	private static final String url = "jdbc:mysql://localhost:3306/kardex?serverTimezone=UTC&useSSL=false";
	private static final String usuario = "root";
	private static final String contraseña = "root";

	// Definimos un bloque estático para cargar el driver de conexión MySQL 
	// Se cargará una sola vez al iniciar el programa
	static {
		try {
			Class.forName(driver);
		} catch (Exception e) {
			System.out.println("Error al cargar el controlador");
			e.printStackTrace();
		}
	}
	
	// Método que establece y devuelve la conexión a la base de datos especificada
	// Será invocado y reutilizado cada vez que se quiera acceder a la base de datos
	public Connection conectar() {
		Connection con = null;
		try {
			con = DriverManager.getConnection(url, usuario, contraseña);
			System.out.println(">> Conexión exitosa");
		} catch (SQLException e) {
			System.out.println("Error al obtener la conexión");
			e.printStackTrace();
		}
		return con;
	}

}

PROGRAMA


DESARROLLO TUS ALGORITMOS 🔥🔥


✅ 1. Envía tu algoritmo.
✅ 2. Indica en qué lenguaje de Programación lo deseas.
✅ 3. Para qué fecha lo quieres.
✅ 4. De que país eres (para tu forma de pago)
✅ 5. También se desarrollan al momento.
✅ 6. Los 3 primeros ejercicios son gratis.
🔸 Explico cada ejercicio que desarrollo en el código.


No hay comentarios, ¡cuéntame algo!

Me gustaría saber tu opinión. ¡Saludos!