diff --git a/.idea/jpa.xml b/.idea/jpa.xml
index 966d5f5..898e07a 100644
--- a/.idea/jpa.xml
+++ b/.idea/jpa.xml
@@ -1,6 +1,7 @@
+
\ No newline at end of file
diff --git a/.idea/libraries/librerias.xml b/.idea/libraries/librerias.xml
index ccf243d..f6fd640 100644
--- a/.idea/libraries/librerias.xml
+++ b/.idea/libraries/librerias.xml
@@ -3,7 +3,6 @@
-
diff --git a/librerias/Driver_MySQL_Connector_J/mysql-connector-java-5.1.47-bin.jar b/librerias/Driver_MySQL_Connector_J/mysql-connector-java-5.1.47-bin.jar
deleted file mode 100644
index fb25d64..0000000
Binary files a/librerias/Driver_MySQL_Connector_J/mysql-connector-java-5.1.47-bin.jar and /dev/null differ
diff --git a/src/capitulo08/bloque01/Main.java b/src/capitulo08/bloque01/Main.java
deleted file mode 100644
index 3f13bfd..0000000
--- a/src/capitulo08/bloque01/Main.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package capitulo08.bloque01;
-
-import capitulo08.bloque01.operaciones.Delete;
-import capitulo08.bloque01.operaciones.Insert;
-import capitulo08.bloque01.operaciones.Select;
-import capitulo08.bloque01.operaciones.Update;
-
-import java.sql.*;
-
-import static capitulo04.utils.Utils.solicitarIntScannerInline;
-import static capitulo04.utils.Utils.solicitarStringScannerInline;
-
-public class Main {
- public static void main(String[] args) {
- int opcion = 0;
- Connection conn = null;
- try {
- conn = getConexion();
- } catch (SQLException | ClassNotFoundException e) {
- throw new RuntimeException(e);
- }
-
- do {
- System.out.println(
- "Seleccione una operación:\n" +
- "0 - Salir del programa\n" +
- "1 - Mostrar todos los fabricantes\n" +
- "2 - Añadir un fabricante\n" +
- "3 - Actualizar un fabricante\n" +
- "4 - Eliminar un fabricante");
- opcion = solicitarIntScannerInline("> ");
-
- try {
- switch (opcion) {
- case 1: {
- Select.mostrarTabla(conn, "fabricante");
- break;
- }
- case 2: {
- Insert.addFabricante(conn,
- solicitarStringScannerInline("Introduzca el CIF: "),
- solicitarStringScannerInline("Introduzca el Nombre: "));
- break;
- }
- case 3: {
- int id;
- do {
- id = solicitarIntScannerInline("Introduzca el ID del fabricante: ");
- } while (!Select.isIdValid(conn, "fabricante", id));
- String cifNuevo = solicitarStringScannerInline("Introduzca el nuevo CIF (en blanco para no cambiar): ");
- String nombreNuevo = solicitarStringScannerInline("Introduzca el nuevo Nombre (en blanco para no cambiar): ");
- Update.actualizarFabricante(conn, id, cifNuevo, nombreNuevo);
- break;
- }
- case 4: {
- int id;
- do {
- id = solicitarIntScannerInline("Introduzca el ID del fabricante: ");
- } while (!Select.isIdValid(conn, "fabricante", id));
- Delete.eliminarRegistro(conn, "fabricante", id);
- break;
- }
- }
- } catch (SQLException e) {
- throw new RuntimeException(e);
- }
-
- } while (opcion != 0);
- }
-
- private static Connection getConexion() throws ClassNotFoundException, SQLException {
- Class.forName(PropiedadesBBDD.getMySQLDriver());
- return DriverManager.getConnection(PropiedadesBBDD.getMySQLConnectionString());
- }
-
-}
diff --git a/src/capitulo08/bloque01/operaciones/Insert.java b/src/capitulo08/bloque01/operaciones/Insert.java
deleted file mode 100644
index 48287e6..0000000
--- a/src/capitulo08/bloque01/operaciones/Insert.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package capitulo08.bloque01.operaciones;
-
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.sql.Statement;
-
-public class Insert {
- public static int addFabricante(Connection conn, String cif, String nombre) throws SQLException {
- Statement st = conn.createStatement();
- return st.executeUpdate("insert into tutorialjavacoches.fabricante (id, cif, nombre) values (" + Select.getNextId(conn, "fabricante") + ",'" + cif + "','" + nombre + "');");
- }
-}
diff --git a/src/capitulo08/bloque01/operaciones/Select.java b/src/capitulo08/bloque01/operaciones/Select.java
deleted file mode 100644
index 50a16fd..0000000
--- a/src/capitulo08/bloque01/operaciones/Select.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package capitulo08.bloque01.operaciones;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-
-public class Select {
- public static void mostrarTabla(Connection conn, String tabla) throws SQLException {
- Statement st = conn.createStatement();
- ResultSet rs = st.executeQuery("select * from tutorialjavacoches." + tabla + ";");
-
- switch (tabla) {
- case "fabricante": {
- System.out.println("ID\t | CIF\t\t\t | Nombre");
- while (rs.next()) {
- System.out.println(rs.getInt(1) + "\t | " + rs.getString(2) + "\t | " + rs.getString(3));
- }
- }
- }
- }
-
- public static int getNextId(Connection conn, String tabla) throws SQLException {
- Statement st = conn.createStatement();
- ResultSet rs = st.executeQuery("select max(id) from tutorialjavacoches." + tabla + ";");
- rs.next();
- return (rs.getInt(1) + 1);
- }
-
- public static boolean isIdValid(Connection conn, String tabla, int id) throws SQLException {
- Statement st = conn.createStatement();
- ResultSet rs = st.executeQuery("select id from tutorialjavacoches." + tabla + " where id=" + id + ";");
- if (rs.next()) {
- return rs.getInt(1) == id;
- } else {
- return false;
- }
- }
-
-
-}
diff --git a/src/capitulo08/bloque01/operaciones/Update.java b/src/capitulo08/bloque01/operaciones/Update.java
deleted file mode 100644
index 563435d..0000000
--- a/src/capitulo08/bloque01/operaciones/Update.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package capitulo08.bloque01.operaciones;
-
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.Objects;
-
-public class Update {
- public static void actualizarFabricante(Connection conn, int id, String cif, String nombre) throws SQLException {
- if (!(Objects.equals(cif, "") || cif == null)) {
- actualizarCampo(conn, "fabricante", id, "cif", cif);
- }
- if (!(Objects.equals(nombre, "") || nombre == null)) {
- actualizarCampo(conn, "fabricante", id, "nombre", nombre);
- }
-
- }
-
- private static int actualizarCampo(Connection conn, String tabla, int id, String campo, String nuevoValor) throws SQLException {
- Statement st = conn.createStatement();
- return st.executeUpdate("update tutorialjavacoches." + tabla + " set " + campo + "='" + nuevoValor + "' where id=" + id + ";");
- }
-}
diff --git a/src/capitulo08/bloque01y02/Main.java b/src/capitulo08/bloque01y02/Main.java
new file mode 100644
index 0000000..a0f3c10
--- /dev/null
+++ b/src/capitulo08/bloque01y02/Main.java
@@ -0,0 +1,389 @@
+package capitulo08.bloque01y02;
+
+import capitulo08.bloque01y02.operaciones.Delete;
+import capitulo08.bloque01y02.operaciones.Insert;
+import capitulo08.bloque01y02.operaciones.Select;
+import capitulo08.bloque01y02.operaciones.Update;
+
+import java.sql.*;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Scanner;
+
+import static capitulo04.utils.Utils.solicitarIntScannerInline;
+import static capitulo04.utils.Utils.solicitarStringScannerInline;
+
+public class Main {
+ public static void main(String[] args) {
+ int opcion = 0;
+ Connection conn = null;
+ try {
+ conn = getConexion();
+ } catch (SQLException | ClassNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+ do {
+ System.out.println(
+ "\n¿Qué quieres administrar?:\n" +
+ "0 - Salir del programa\n" +
+ "1 - Coches\n" +
+ "2 - Fabricantes\n" +
+ "3 - Concesionarios\n" +
+ "4 - Clientes\n" +
+ "5 - Ventas");
+ opcion = solicitarIntScannerInline("> ");
+
+ switch (opcion) {
+ case 1:
+ menuCoches(conn);
+ break;
+ case 2:
+ menuFabricantes(conn);
+ break;
+ case 3:
+ menuConcesionarios(conn);
+ break;
+ case 4:
+ menuClientes(conn);
+ break;
+ case 5:
+ menuVentas(conn);
+ break;
+
+ }
+
+
+ } while (opcion != 0);
+
+ try {
+ conn.close();
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ private static Connection getConexion() throws ClassNotFoundException, SQLException {
+ //Class.forName(PropiedadesBBDD.getMySQLDriver());
+ return DriverManager.getConnection(PropiedadesBBDD.getMySQLConnectionString());
+ }
+
+
+ private static void menuFabricantes(Connection conn) {
+ int opcion = 0;
+ do {
+ System.out.println(
+ "\nSeleccione una operación:\n" +
+ "0 - Volver atrás\n" +
+ "1 - Mostrar todos los fabricantes\n" +
+ "2 - Añadir un fabricante\n" +
+ "3 - Actualizar un fabricante\n" +
+ "4 - Eliminar un fabricante");
+ opcion = solicitarIntScannerInline("> ");
+
+ try {
+ switch (opcion) {
+ case 1: {
+ Select.mostrarTabla(conn, "fabricante");
+ break;
+ }
+ case 2: {
+ Insert.addFabricante(conn,
+ solicitarStringScannerInline("Introduzca el CIF: "),
+ solicitarStringScannerInline("Introduzca el Nombre: "));
+ break;
+ }
+ case 3: {
+ int id;
+ do {
+ id = solicitarIntScannerInline("Introduzca el ID del fabricante: ");
+ } while (!Select.isIdValid(conn, "fabricante", id));
+ String cifNuevo = solicitarStringScannerInline("Introduzca el nuevo CIF (en blanco para no cambiar): ");
+ String nombreNuevo = solicitarStringScannerInline("Introduzca el nuevo Nombre (en blanco para no cambiar): ");
+ Update.actualizarFabricante(conn, id, cifNuevo, nombreNuevo);
+ break;
+ }
+ case 4: {
+ int id;
+ do {
+ id = solicitarIntScannerInline("Introduzca el ID del fabricante: ");
+ } while (!Select.isIdValid(conn, "fabricante", id));
+ Delete.eliminarRegistro(conn, "fabricante", id);
+ break;
+ }
+ }
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+
+ } while (opcion != 0);
+ }
+
+ private static void menuCoches(Connection conn) {
+ int opcion = 0;
+ do {
+ System.out.println(
+ "\nSeleccione una operación:\n" +
+ "0 - Volver atrás\n" +
+ "1 - Mostrar todos los coches\n" +
+ "2 - Añadir un coche\n" +
+ "3 - Actualizar un coche\n" +
+ "4 - Eliminar un coche");
+ opcion = solicitarIntScannerInline("> ");
+
+ try {
+ switch (opcion) {
+ case 1: {
+ Select.mostrarTabla(conn, "coche");
+ break;
+ }
+ case 2: {
+ Insert.addCoche(conn,
+ solicitarIntScannerInline("Introduzca el ID del fabricante: "),
+ solicitarStringScannerInline("Introduzca número del bastidor: "),
+ solicitarStringScannerInline("Introduzca el modelo: "),
+ solicitarStringScannerInline("Introduzca el color: "));
+ break;
+ }
+ case 3: {
+ int id;
+ int idFabricante;
+ do {
+ id = solicitarIntScannerInline("Introduzca el ID del coche: ");
+ } while (!Select.isIdValid(conn, "coche", id));
+ do {
+ idFabricante = solicitarIntScannerInline("Introduzca el nuevo id del Fabricante (0 para no cambiar): ");
+ } while (!Select.isIdValid(conn, "fabricante", idFabricante) && !(idFabricante == 0));
+ String numBastidor = solicitarStringScannerInline("Introduzca el nuevo número de bastidor (en blanco para no cambiar): ");
+ String modelo = solicitarStringScannerInline("Introduzca el nuevo modelo (en blanco para no cambiar): ");
+ String color = solicitarStringScannerInline("Introduzca el nuevo color (en blanco para no cambiar): ");
+ Update.actualizarCoche(conn, id, idFabricante, numBastidor, modelo, color);
+ break;
+ }
+ case 4: {
+ int id;
+ do {
+ id = solicitarIntScannerInline("Introduzca el ID del coche: ");
+ } while (!Select.isIdValid(conn, "coche", id));
+ Delete.eliminarRegistro(conn, "coche", id);
+ break;
+ }
+ }
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+
+ } while (opcion != 0);
+ }
+
+ private static void menuConcesionarios(Connection conn) {
+ int opcion = 0;
+ do {
+ System.out.println(
+ "\nSeleccione una operación:\n" +
+ "0 - Volver atrás\n" +
+ "1 - Mostrar todos los concesionarios\n" +
+ "2 - Añadir un concesionario\n" +
+ "3 - Actualizar un concesionario\n" +
+ "4 - Eliminar un concesionario");
+ opcion = solicitarIntScannerInline("> ");
+
+ try {
+ switch (opcion) {
+ case 1: {
+ Select.mostrarTabla(conn, "concesionario");
+ break;
+ }
+ case 2: {
+ Insert.addConcesionario(conn,
+ solicitarStringScannerInline("Introduzca el CIF: "),
+ solicitarStringScannerInline("Introduzca el Nombre: "),
+ solicitarStringScannerInline("Introduzca la Localidad: "));
+ break;
+ }
+ case 3: {
+ int id;
+ do {
+ id = solicitarIntScannerInline("Introduzca el ID del concesionario: ");
+ } while (!Select.isIdValid(conn, "concesionario", id));
+ String cifNuevo = solicitarStringScannerInline("Introduzca el nuevo CIF (en blanco para no cambiar): ");
+ String nombreNuevo = solicitarStringScannerInline("Introduzca el nuevo Nombre (en blanco para no cambiar): ");
+ String localidadNueva = solicitarStringScannerInline("Introduzca la nueva Localidad (en blanco para no cambiar): ");
+ Update.actualizarConcesionario(conn, id, cifNuevo, nombreNuevo, localidadNueva);
+ break;
+ }
+ case 4: {
+ int id;
+ do {
+ id = solicitarIntScannerInline("Introduzca el ID del concesionario: ");
+ } while (!Select.isIdValid(conn, "concesionario", id));
+ Delete.eliminarRegistro(conn, "concesionario", id);
+ break;
+ }
+ }
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+
+ } while (opcion != 0);
+ }
+
+ private static void menuClientes(Connection conn) {
+ int opcion = 0;
+ do {
+ System.out.println(
+ "\nSeleccione una operación:\n" +
+ "0 - Volver atrás\n" +
+ "1 - Mostrar todos los clientes\n" +
+ "2 - Añadir un cliente\n" +
+ "3 - Actualizar un cliente\n" +
+ "4 - Eliminar un cliente");
+ opcion = solicitarIntScannerInline("> ");
+
+ try {
+ switch (opcion) {
+ case 1: {
+ Select.mostrarTabla(conn, "cliente");
+ break;
+ }
+ case 2: {
+ Insert.addCliente(conn,
+ solicitarStringScannerInline("Introduzca el Nombre: "),
+ solicitarStringScannerInline("Introduzca los Apellidos: "),
+ solicitarStringScannerInline("Introduzca la Localidad: "),
+ solicitarStringScannerInline("Introduzca el DNI/NIE: "),
+ solicitarFechaInline("fecha de nacimiento", "dd/MM/yyyy"),
+ solicitarIntScannerInline("Introduzca el estado (0 -> NO o 1 -> SÍ): "));
+ break;
+ }
+ case 3: {
+ int id;
+ do {
+ id = solicitarIntScannerInline("Introduzca el ID del cliente: ");
+ } while (!Select.isIdValid(conn, "cliente", id));
+
+ String nuevoNombre = solicitarStringScannerInline("Introduzca el nuevo Nombre (en blanco para no cambiar): ");
+ String nuevosApellidos = solicitarStringScannerInline("Introduzca los Apellidos (en blanco para no cambiar): ");
+ String nuevaLocalidad = solicitarStringScannerInline("Introduzca la Localidad (en blanco para no cambiar): ");
+ String nuevoDNI = solicitarStringScannerInline("Introduzca el DNI/NIE (en blanco para no cambiar): ");
+ Date nuevaFecha = solicitarFechaInline("fecha de nacimiento", "dd/MM/yyyy");
+ int nuevoEstado = solicitarIntScannerInline("Introduzca el estado (0 -> NO o 1 -> SÍ): ");
+
+ Update.actualizarCliente(conn, id, nuevoNombre, nuevosApellidos, nuevaLocalidad, nuevoDNI, nuevaFecha, nuevoEstado);
+ break;
+ }
+ case 4: {
+ int id;
+ do {
+ id = solicitarIntScannerInline("Introduzca el ID del cliente: ");
+ } while (!Select.isIdValid(conn, "cliente", id));
+ Delete.eliminarRegistro(conn, "cliente", id);
+ break;
+ }
+ }
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+
+ } while (opcion != 0);
+ }
+
+ private static void menuVentas(Connection conn) {
+ int opcion = 0;
+ do {
+ System.out.println(
+ "\nSeleccione una operación:\n" +
+ "0 - Volver atrás\n" +
+ "1 - Mostrar todas las ventas\n" +
+ "2 - Añadir una venta\n" +
+ "3 - Actualizar una venta\n" +
+ "4 - Eliminar una venta");
+ opcion = solicitarIntScannerInline("> ");
+
+ try {
+ switch (opcion) {
+ case 1: {
+ Select.mostrarTabla(conn, "venta");
+ break;
+ }
+ case 2: {
+ int idCliente;
+ int idConcesionario;
+ int idCoche;
+ do {
+ idCliente = solicitarIntScannerInline("Introduzca el ID del Cliente: ");
+ } while (!Select.isIdValid(conn, "cliente", idCliente));
+ do {
+ idConcesionario = solicitarIntScannerInline("Introduzca el ID del Concesionario: ");
+ } while (!Select.isIdValid(conn, "concesionario", idConcesionario));
+ do {
+ idCoche = solicitarIntScannerInline("Introduzca el ID del Coche: ");
+ } while (!Select.isIdValid(conn, "coche", idCoche));
+
+ Insert.addVenta(conn,
+ idCliente,
+ idConcesionario,
+ idCoche,
+ solicitarFechaInline("fecha de venta", "dd/MM/yyyy"),
+ solicitarIntScannerInline("Introduzca el precio de Venta: "));
+ break;
+ }
+ case 3: {
+ int id;
+ do {
+ id = solicitarIntScannerInline("Introduzca el ID de la venta: ");
+ } while (!Select.isIdValid(conn, "venta", id));
+
+ int nuevoIdCliente;
+ int nuevoIdConcesionario;
+ int nuevoIdCoche;
+ do {
+ nuevoIdCliente = solicitarIntScannerInline("Introduzca el nuevo ID del Cliente (0 para no cambiar): ");
+ } while (!(nuevoIdCliente == 0 || Select.isIdValid(conn, "cliente", nuevoIdCliente)));
+ do {
+ nuevoIdConcesionario = solicitarIntScannerInline("Introduzca el nuevo ID del Concesionario (0 para no cambiar): ");
+ } while (!(nuevoIdConcesionario == 0 || Select.isIdValid(conn, "concesionario", nuevoIdConcesionario)));
+ do {
+ nuevoIdCoche = solicitarIntScannerInline("Introduzca el nuevo ID del Coche (0 para no cambiar): ");
+ } while (!(nuevoIdCoche == 0 || Select.isIdValid(conn, "coche", nuevoIdCoche)));
+
+ Date nuevaFecha = solicitarFechaInline("fecha de nacimiento", "dd/MM/yyyy");
+ int nuevoPrecio = solicitarIntScannerInline("Introduzca el nuevo precio de Venta (0 para no cambiar): ");
+
+ Update.actualizarVenta(conn, id, nuevoIdCliente, nuevoIdConcesionario, nuevoIdCoche, nuevaFecha, nuevoPrecio);
+ break;
+ }
+ case 4: {
+ int id;
+ do {
+ id = solicitarIntScannerInline("Introduzca el ID de la venta: ");
+ } while (!Select.isIdValid(conn, "venta", id));
+ Delete.eliminarRegistro(conn, "venta", id);
+ break;
+ }
+ }
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+
+ } while (opcion != 0);
+ }
+
+
+ public static Date solicitarFechaInline(String solicitud, String formato) {
+ Scanner sc = new Scanner(System.in);
+ SimpleDateFormat formatoFecha = new SimpleDateFormat(formato);
+
+ while (true) {
+ System.out.print("Introduzca una " + solicitud + " con este formato ( " + formato + " ) > ");
+ String fechaIntroducida = sc.nextLine();
+
+ try {
+ return formatoFecha.parse(fechaIntroducida);
+ } catch (ParseException e) {
+ System.out.println("\nVuelva a introducir la fecha, en el formato correcto: " + formato);
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/src/capitulo08/bloque01/PropiedadesBBDD.java b/src/capitulo08/bloque01y02/PropiedadesBBDD.java
similarity index 94%
rename from src/capitulo08/bloque01/PropiedadesBBDD.java
rename to src/capitulo08/bloque01y02/PropiedadesBBDD.java
index 4036e56..7b6b468 100644
--- a/src/capitulo08/bloque01/PropiedadesBBDD.java
+++ b/src/capitulo08/bloque01y02/PropiedadesBBDD.java
@@ -1,4 +1,4 @@
-package capitulo08.bloque01;
+package capitulo08.bloque01y02;
import java.io.File;
import java.io.FileReader;
@@ -14,7 +14,7 @@ public class PropiedadesBBDD {
propiedades = new Properties();
try {
- File file = new File("./out/production/Ejercicios/capitulo08/otros/mysql.properties");
+ File file = new File("./out/production/Ejercicios/capitulo08/bloque01y02/mysql.properties");
propiedades.load(new FileReader(file));
} catch (IOException e) {
throw new RuntimeException(e);
diff --git a/src/capitulo08/bloque01/mysql.properties b/src/capitulo08/bloque01y02/mysql.properties
similarity index 100%
rename from src/capitulo08/bloque01/mysql.properties
rename to src/capitulo08/bloque01y02/mysql.properties
diff --git a/src/capitulo08/bloque01/operaciones/Delete.java b/src/capitulo08/bloque01y02/operaciones/Delete.java
similarity index 89%
rename from src/capitulo08/bloque01/operaciones/Delete.java
rename to src/capitulo08/bloque01y02/operaciones/Delete.java
index edd7f52..c6b8cf3 100644
--- a/src/capitulo08/bloque01/operaciones/Delete.java
+++ b/src/capitulo08/bloque01y02/operaciones/Delete.java
@@ -1,4 +1,4 @@
-package capitulo08.bloque01.operaciones;
+package capitulo08.bloque01y02.operaciones;
import java.sql.Connection;
import java.sql.SQLException;
diff --git a/src/capitulo08/bloque01y02/operaciones/Insert.java b/src/capitulo08/bloque01y02/operaciones/Insert.java
new file mode 100644
index 0000000..6197b2c
--- /dev/null
+++ b/src/capitulo08/bloque01y02/operaciones/Insert.java
@@ -0,0 +1,46 @@
+package capitulo08.bloque01y02.operaciones;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class Insert {
+ public static int addFabricante(Connection conn, String cif, String nombre) throws SQLException {
+ Statement st = conn.createStatement();
+ return st.executeUpdate("insert into tutorialjavacoches.fabricante (id, cif, nombre) values (" +
+ Select.getNextId(conn, "fabricante") + ",'" + cif + "','" + nombre + "');");
+ }
+
+ public static int addCoche(Connection conn, int idFabricante, String numBastidor, String modelo, String color) throws SQLException {
+ Statement st = conn.createStatement();
+ if (Select.isIdValid(conn, "fabricante", idFabricante)) {
+ return st.executeUpdate("insert into tutorialjavacoches.coche (id, idfabricante, bastidor, modelo, color) values (" +
+ Select.getNextId(conn, "coche") + "," + idFabricante + ",'" + numBastidor + "','" + modelo + "','" + color + "');");
+ }
+ return 0;
+ }
+
+ public static int addConcesionario(Connection conn, String cif, String nombre, String localidad) throws SQLException {
+ Statement st = conn.createStatement();
+ return st.executeUpdate("insert into tutorialjavacoches.concesionario (id, cif, nombre, localidad) values (" +
+ Select.getNextId(conn, "concesionario") + ",'" + cif + "','" + nombre + "','" + localidad + "');");
+ }
+
+ public static int addCliente(Connection conn, String nombre, String apellidos, String localidad, String dni, Date fechaNac, int activo) throws SQLException {
+ Statement st = conn.createStatement();
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ return st.executeUpdate("insert into tutorialjavacoches.cliente (id, nombre, apellidos, localidad, dniNie, fechaNac, activo) values (" +
+ Select.getNextId(conn, "cliente") + ",'" + nombre + "','" + apellidos + "','" + localidad + "','" + dni + "','" + sdf.format(fechaNac) + "'," + activo + ");");
+ }
+
+ public static int addVenta(Connection conn, int idCliente, int idConcesionario, int idCoche, Date fecha, int precioVenta) throws SQLException {
+ Statement st = conn.createStatement();
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ return st.executeUpdate("insert into tutorialjavacoches.venta (id, idCliente, idConcesionario, idCoche, fecha, precioVenta) values (" +
+ Select.getNextId(conn, "venta") + "," + idCliente + "," + idConcesionario + "," + idCoche + ",'" + sdf.format(fecha) + "'," + precioVenta + ");");
+ }
+
+
+}
diff --git a/src/capitulo08/bloque01y02/operaciones/Select.java b/src/capitulo08/bloque01y02/operaciones/Select.java
new file mode 100644
index 0000000..737f816
--- /dev/null
+++ b/src/capitulo08/bloque01y02/operaciones/Select.java
@@ -0,0 +1,67 @@
+package capitulo08.bloque01y02.operaciones;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+public class Select {
+ public static void mostrarTabla(Connection conn, String tabla) throws SQLException {
+ Statement st = conn.createStatement();
+ ResultSet rs = st.executeQuery("select * from tutorialjavacoches." + tabla + ";");
+
+ switch (tabla) {
+ case "fabricante": {
+ System.out.println("ID\t | CIF\t\t\t | Nombre");
+ while (rs.next()) {
+ System.out.println(rs.getInt(1) + "\t | " + rs.getString(2) + "\t | " + rs.getString(3));
+ }
+ break;
+ }
+ case "coche": {
+ System.out.println("ID\t | ID F\t | Nº Bastidor\t | Modelo\t | Color");
+ while (rs.next()) {
+ System.out.println(rs.getInt(1) + "\t | " + rs.getInt(2) + "\t | " + rs.getString(3) + "\t | " + rs.getString(4) + "\t | " + rs.getString(5));
+ }
+ break;
+ }
+ case "concesionario": {
+ System.out.println("ID\t | CIF\t\t\t | Nombre\t\t\t\t | Localidad");
+ while (rs.next()) {
+ System.out.println(rs.getInt(1) + "\t | " + rs.getString(2) + "\t | " + rs.getString(3) + "\t | " + rs.getString(4));
+ }
+ break;
+ }
+ case "cliente": {
+ System.out.println("ID\t | Nombre\t\t | Apellidos\t | Localidad\t | DNI\t | Fecha Nacimiento\t | Activo");
+ while (rs.next()) {
+ System.out.println(rs.getInt(1) + "\t | " + rs.getString(2) + "\t\t | " + rs.getString(3) + "\t | " + rs.getString(4) + "\t | " + rs.getString(5) + "\t | " + rs.getDate(6) + "\t | " + rs.getInt(7));
+ }
+ }
+ case "venta": {
+ System.out.println("ID\t | ID Cliente\t | ID Concesionario\t | ID Coche\t | Fecha\t | Precio Venta");
+ while (rs.next()) {
+ System.out.println(rs.getInt(1) + "\t | " + rs.getInt(2) + "\t | " + rs.getInt(3) + "\t | " + rs.getInt(4) + "\t | " + rs.getDate(5) + "\t | " + rs.getInt(6));
+ }
+ }
+ }
+ }
+
+ public static int getNextId(Connection conn, String tabla) throws SQLException {
+ Statement st = conn.createStatement();
+ ResultSet rs = st.executeQuery("select max(id) from tutorialjavacoches." + tabla + ";");
+ rs.next();
+ return (rs.getInt(1) + 1);
+ }
+
+ public static boolean isIdValid(Connection conn, String tabla, int id) throws SQLException {
+ Statement st = conn.createStatement();
+ ResultSet rs = st.executeQuery("select id from tutorialjavacoches." + tabla + " where id=" + id + ";");
+ if (rs.next()) {
+ return rs.getInt(1) == id;
+ } else {
+ return false;
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/src/capitulo08/bloque01y02/operaciones/Update.java b/src/capitulo08/bloque01y02/operaciones/Update.java
new file mode 100644
index 0000000..f3f7aea
--- /dev/null
+++ b/src/capitulo08/bloque01y02/operaciones/Update.java
@@ -0,0 +1,106 @@
+package capitulo08.bloque01y02.operaciones;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Objects;
+
+public class Update {
+ public static void actualizarFabricante(Connection conn, int id, String cif, String nombre) throws SQLException {
+ if (!(Objects.equals(cif, "") || cif == null)) {
+ actualizarCampoString(conn, "fabricante", id, "cif", cif);
+ }
+ if (!(Objects.equals(nombre, "") || nombre == null)) {
+ actualizarCampoString(conn, "fabricante", id, "nombre", nombre);
+ }
+ }
+
+ public static void actualizarCoche(Connection conn, int id, int idFabricante, String numBastidor, String modelo, String color) throws SQLException {
+ if (idFabricante != 0) {
+ actualizarCampoInt(conn, "coche", id, "idfabricante", idFabricante);
+ }
+ if (!(Objects.equals(numBastidor, "") || numBastidor == null)) {
+ actualizarCampoString(conn, "coche", id, "bastidor", numBastidor);
+ }
+ if (!(Objects.equals(modelo, "") || modelo == null)) {
+ actualizarCampoString(conn, "coche", id, "modelo", modelo);
+ }
+ if (!(Objects.equals(color, "") || color == null)) {
+ actualizarCampoString(conn, "coche", id, "color", color);
+ }
+ }
+
+ public static void actualizarConcesionario(Connection conn, int id, String cif, String nombre, String localidad) throws SQLException {
+ if (!(Objects.equals(cif, "") || cif == null)) {
+ actualizarCampoString(conn, "concesionario", id, "cif", cif);
+ }
+ if (!(Objects.equals(nombre, "") || nombre == null)) {
+ actualizarCampoString(conn, "concesionario", id, "nombre", nombre);
+ }
+ if (!(Objects.equals(localidad, "") || localidad == null)) {
+ actualizarCampoString(conn, "concesionario", id, "localidad", localidad);
+ }
+ }
+
+
+ public static void actualizarCliente(Connection conn, int id, String nombre, String apellidos, String localidad, String dniNie, Date fechaNac, int activo) throws SQLException {
+ if (!(Objects.equals(nombre, "") || nombre == null)) {
+ actualizarCampoString(conn, "cliente", id, "nombre", nombre);
+ }
+ if (!(Objects.equals(apellidos, "") || apellidos == null)) {
+ actualizarCampoString(conn, "cliente", id, "apellidos", apellidos);
+ }
+ if (!(Objects.equals(localidad, "") || localidad == null)) {
+ actualizarCampoString(conn, "cliente", id, "localidad", localidad);
+ }
+ if (!(Objects.equals(dniNie, "") || dniNie == null)) {
+ actualizarCampoString(conn, "cliente", id, "dniNie", dniNie);
+ }
+ if (fechaNac != null) {
+ actualizarCampoDate(conn, "cliente", id, "fechaNac", fechaNac);
+ }
+ if ((activo == 0 || activo == 1)) {
+ actualizarCampoInt(conn, "cliente", id, "activo", activo);
+ }
+ }
+
+ public static void actualizarVenta(Connection conn, int id, int idCliente, int idConcesionario, int idCoche, Date fecha, int precioVenta) throws SQLException {
+ if (idCliente != 0) {
+ actualizarCampoInt(conn, "venta", id, "idCliente", idCliente);
+ }
+ if (idConcesionario != 0) {
+ actualizarCampoInt(conn, "venta", id, "idConcesionario", idConcesionario);
+ }
+ if (idCoche != 0) {
+ actualizarCampoInt(conn, "venta", id, "idCoche", idCoche);
+ }
+ if (fecha != null) {
+ actualizarCampoDate(conn, "venta", id, "fecha", fecha);
+ }
+ if (precioVenta != 0) {
+ actualizarCampoInt(conn, "venta", id, "precioVenta", precioVenta);
+ }
+
+ }
+
+
+
+
+
+
+
+ private static int actualizarCampoString(Connection conn, String tabla, int id, String campo, String nuevoValor) throws SQLException {
+ Statement st = conn.createStatement();
+ return st.executeUpdate("update tutorialjavacoches." + tabla + " set " + campo + "='" + nuevoValor + "' where id=" + id + ";");
+ }
+ private static int actualizarCampoInt(Connection conn, String tabla, int id, String campo, int nuevoValor) throws SQLException {
+ Statement st = conn.createStatement();
+ return st.executeUpdate("update tutorialjavacoches." + tabla + " set " + campo + "=" + nuevoValor + " where id=" + id + ";");
+ }
+ private static int actualizarCampoDate(Connection conn, String tabla, int id, String campo, Date nuevoValor) throws SQLException {
+ Statement st = conn.createStatement();
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ return st.executeUpdate("update tutorialjavacoches." + tabla + " set " + campo + "='" + sdf.format(nuevoValor) + "' where id=" + id + ";");
+ }}