generated from programacionThiar/plantilla_iesthiar_javafx
gestionClientesDAO
This commit is contained in:
6
db_config.properties
Normal file
6
db_config.properties
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
#db.servidor=172.18.185.243
|
||||||
|
db.servidor=debianpsp
|
||||||
|
db.baseDatos=tienda
|
||||||
|
db.usuario=root
|
||||||
|
db.clave=example
|
||||||
|
|
||||||
23
pom.xml
23
pom.xml
@@ -1,5 +1,5 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>iesthiar</groupId>
|
<groupId>iesthiar</groupId>
|
||||||
<artifactId>t14ejemplos</artifactId>
|
<artifactId>t14ejemplos</artifactId>
|
||||||
@@ -20,6 +20,25 @@
|
|||||||
<artifactId>javafx-fxml</artifactId>
|
<artifactId>javafx-fxml</artifactId>
|
||||||
<version>21</version>
|
<version>21</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>mysql</groupId>
|
||||||
|
<artifactId>mysql-connector-java</artifactId>
|
||||||
|
<version>8.0.33</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.commons</groupId>
|
||||||
|
<artifactId>commons-dbcp2</artifactId>
|
||||||
|
<version>2.12.0</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.xerial</groupId>
|
||||||
|
<artifactId>sqlite-jdbc</artifactId>
|
||||||
|
<version>3.45.3.0</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
package iesthiar;
|
package iesthiar;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
import javafx.application.Application;
|
import javafx.application.Application;
|
||||||
import javafx.fxml.FXMLLoader;
|
import javafx.fxml.FXMLLoader;
|
||||||
import javafx.scene.Parent;
|
import javafx.scene.Parent;
|
||||||
import javafx.scene.Scene;
|
import javafx.scene.Scene;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JavaFX App
|
* JavaFX App
|
||||||
*/
|
*/
|
||||||
@@ -17,7 +17,7 @@ public class App extends Application {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void start(Stage stage) throws IOException {
|
public void start(Stage stage) throws IOException {
|
||||||
scene = new Scene(loadFXML("primary"), 640, 480);
|
scene = new Scene(loadFXML("pruebaConexion"), 640, 480);
|
||||||
stage.setScene(scene);
|
stage.setScene(scene);
|
||||||
stage.show();
|
stage.show();
|
||||||
}
|
}
|
||||||
|
|||||||
36
src/main/java/iesthiar/EjemploSQLite.java
Normal file
36
src/main/java/iesthiar/EjemploSQLite.java
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
package iesthiar;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
|
||||||
|
public class EjemploSQLite {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
try (Connection c = DriverManager.getConnection("jdbc:sqlite:mibd.db");
|
||||||
|
PreparedStatement pstm=c.prepareStatement("SELECT name FROM sqlite_master WHERE type='table' AND name='cliente';");
|
||||||
|
) {
|
||||||
|
System.out.println("Base de datos conectada");
|
||||||
|
// Crear las tablas si es necesario
|
||||||
|
try (ResultSet rs=pstm.executeQuery()){
|
||||||
|
if (rs.next()){
|
||||||
|
System.out.println("Existe");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
System.out.println("No existe");
|
||||||
|
pstm=c.prepareStatement("create table cliente(
|
||||||
|
|
||||||
|
)");
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e){
|
||||||
|
System.out.println("Error en la consulta");
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println("Error al entrar en la BD");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
40
src/main/java/iesthiar/PreparadasController.java
Normal file
40
src/main/java/iesthiar/PreparadasController.java
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
package iesthiar;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
import javafx.fxml.FXML;
|
||||||
|
import javafx.scene.control.TextArea;
|
||||||
|
import javafx.scene.control.TextField;
|
||||||
|
|
||||||
|
public class PreparadasController {
|
||||||
|
@FXML
|
||||||
|
private TextArea salida;
|
||||||
|
@FXML
|
||||||
|
private TextField nombre;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private void conectar() throws IOException {
|
||||||
|
String url = "jdbc:mysql://172.18.185.243:3306/tienda";
|
||||||
|
String sentenciasql = "select * from clientes where nombre=?";
|
||||||
|
try (Connection conn = DriverManager.getConnection(url, "root", "example");
|
||||||
|
PreparedStatement preparada=conn.prepareStatement(sentenciasql);) {
|
||||||
|
preparada.setString(1, nombre.getText());
|
||||||
|
try (ResultSet res=preparada.executeQuery()) {
|
||||||
|
while (res.next()){
|
||||||
|
salida.appendText(res.getInt(1)+":"+res.getString(2)+" - "+res.getString(3)+"\n");
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
salida.appendText("Error en la consulta");
|
||||||
|
}
|
||||||
|
salida.appendText("Conexión establecida ");
|
||||||
|
} catch (SQLException e) {
|
||||||
|
salida.appendText("Error en la conexión a la base de datos");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
package iesthiar;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import javafx.fxml.FXML;
|
|
||||||
|
|
||||||
public class PrimaryController {
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private void switchToSecondary() throws IOException {
|
|
||||||
App.setRoot("secondary");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
95
src/main/java/iesthiar/PruebaConexionController.java
Normal file
95
src/main/java/iesthiar/PruebaConexionController.java
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
package iesthiar;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.sql.Statement;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
import javafx.fxml.FXML;
|
||||||
|
import javafx.scene.control.TextArea;
|
||||||
|
import javafx.scene.control.TextField;
|
||||||
|
import javafx.scene.control.TextInputDialog;
|
||||||
|
|
||||||
|
public class PruebaConexionController {
|
||||||
|
@FXML
|
||||||
|
private TextArea salida;
|
||||||
|
@FXML
|
||||||
|
private TextArea salidaRes;
|
||||||
|
@FXML
|
||||||
|
private TextArea salidaRes3;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private TextField servidor;
|
||||||
|
@FXML
|
||||||
|
private TextField puerto;
|
||||||
|
@FXML
|
||||||
|
private TextField baseDatos;
|
||||||
|
@FXML
|
||||||
|
private TextField usuario;
|
||||||
|
@FXML
|
||||||
|
private TextField nombre;
|
||||||
|
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private void conectar() throws IOException {
|
||||||
|
String url = "jdbc:mysql://localhost:3306/tienda";
|
||||||
|
// String sentenciasql = "select * from clientes";
|
||||||
|
try (Connection conn = DriverManager.getConnection(url, "root", "example");) {
|
||||||
|
salida.appendText("Conexión establecida ");
|
||||||
|
} catch (SQLException e) {
|
||||||
|
salida.appendText("Error en la conexión a la base de datos");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private void conectarRes() throws IOException {
|
||||||
|
String url = "jdbc:mysql://" + servidor.getText() + ":" + puerto.getText() + "/" + baseDatos.getText();
|
||||||
|
String sentenciasql = "select * from clientes";
|
||||||
|
try (Connection conn = DriverManager.getConnection(url, usuario.getText(), pideClave());
|
||||||
|
Statement st = conn.createStatement();
|
||||||
|
ResultSet rs = st.executeQuery(sentenciasql)) {
|
||||||
|
salidaRes.appendText("Conexión establecida \n");
|
||||||
|
while (rs.next()) {
|
||||||
|
salidaRes.appendText("Id: " + rs.getInt(1) + " Nombre: " + rs.getString("nombre") + " Dirección: "
|
||||||
|
+ rs.getString(3) + "\n");
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
salidaRes.appendText("Error en la conexión a la base de datos");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String pideClave() {
|
||||||
|
TextInputDialog pregunta = new TextInputDialog();
|
||||||
|
pregunta.setTitle("Conexión a la BD");
|
||||||
|
pregunta.setHeaderText("Conexión a "+baseDatos.getText()+" en "+servidor.getText());
|
||||||
|
pregunta.setContentText("Introduce la clave del usuario "+usuario.getText());
|
||||||
|
|
||||||
|
// Traditional way to get the response value.
|
||||||
|
Optional<String> result = pregunta.showAndWait();
|
||||||
|
if (result.isPresent()) {
|
||||||
|
return result.get();
|
||||||
|
} else return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private void conectarRes3() throws IOException {
|
||||||
|
String url = "jdbc:mysql://172.18.185.243:3306/tienda";
|
||||||
|
// ' or 1=1 or nombre='
|
||||||
|
// ' or ''='
|
||||||
|
String sentenciasql = "select * from clientes where nombre ='"+nombre.getText()+"'";
|
||||||
|
try (Connection conn = DriverManager.getConnection(url, "root", "example");
|
||||||
|
Statement st = conn.createStatement();
|
||||||
|
ResultSet rs = st.executeQuery(sentenciasql)) {
|
||||||
|
salidaRes3.appendText("Conexión establecida \n");
|
||||||
|
while (rs.next()) {
|
||||||
|
salidaRes3.appendText("Id: " + rs.getInt(1) + " Nombre: " + rs.getString("nombre") + " Dirección: "
|
||||||
|
+ rs.getString(3) + "\n");
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
salidaRes3.appendText("Error en la conexión a la base de datos");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
package iesthiar;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import javafx.fxml.FXML;
|
|
||||||
|
|
||||||
public class SecondaryController {
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
private void switchToPrimary() throws IOException {
|
|
||||||
App.setRoot("primary");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
27
src/main/java/iesthiar/_49_EjemploCompleto.java
Normal file
27
src/main/java/iesthiar/_49_EjemploCompleto.java
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
package iesthiar;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.sql.Statement;
|
||||||
|
|
||||||
|
|
||||||
|
public class _49_EjemploCompleto {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
String url = "jdbc:mysql://localhost:3306/tienda";
|
||||||
|
String sentenciasql = "select * from clientes";
|
||||||
|
try (Connection conn = DriverManager.getConnection(url, "root", "example");
|
||||||
|
Statement st = conn.createStatement();
|
||||||
|
ResultSet rs = st.executeQuery(sentenciasql)) {
|
||||||
|
System.out.println("Conexión establecida ");
|
||||||
|
while (rs.next()) {
|
||||||
|
System.out.print("Id: " + rs.getInt(1));
|
||||||
|
System.out.print(" Nombre: " + rs.getString("nombre"));
|
||||||
|
System.out.println(" Dirección: " + rs.getString(3));
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
System.err.println("Error en la conexión a la base de datos");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
359
src/main/java/iesthiar/gestorClientes/DBManager.java
Normal file
359
src/main/java/iesthiar/gestorClientes/DBManager.java
Normal file
@@ -0,0 +1,359 @@
|
|||||||
|
package iesthiar.gestorClientes;
|
||||||
|
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.sql.Statement;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author lionel
|
||||||
|
*/
|
||||||
|
public class DBManager {
|
||||||
|
|
||||||
|
// Conexión a la base de datos
|
||||||
|
private static Connection conn = null;
|
||||||
|
|
||||||
|
// Configuración de la conexión a la base de datos
|
||||||
|
private static final String DB_HOST = "localhost";
|
||||||
|
private static final String DB_PORT = "3306";
|
||||||
|
private static final String DB_NAME = "tienda";
|
||||||
|
private static final String DB_URL = "jdbc:mysql://" + DB_HOST + ":" + DB_PORT + "/" + DB_NAME + "?serverTimezone=UTC";
|
||||||
|
private static final String DB_USER = "root";
|
||||||
|
private static final String DB_PASS = "";
|
||||||
|
private static final String DB_MSQ_CONN_OK = "CONEXIÓN CORRECTA";
|
||||||
|
private static final String DB_MSQ_CONN_NO = "ERROR EN LA CONEXIÓN";
|
||||||
|
|
||||||
|
// Configuración de la tabla Clientes
|
||||||
|
private static final String DB_CLI = "clientes";
|
||||||
|
private static final String DB_CLI_SELECT = "SELECT * FROM " + DB_CLI;
|
||||||
|
private static final String DB_CLI_ID = "id";
|
||||||
|
private static final String DB_CLI_NOM = "nombre";
|
||||||
|
private static final String DB_CLI_DIR = "direccion";
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
// MÉTODOS DE CONEXIÓN A LA BASE DE DATOS
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Intenta cargar el JDBC driver.
|
||||||
|
* @return true si pudo cargar el driver, false en caso contrario
|
||||||
|
*/
|
||||||
|
public static boolean loadDriver() {
|
||||||
|
try {
|
||||||
|
System.out.print("Cargando Driver...");
|
||||||
|
Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
|
||||||
|
System.out.println("OK!");
|
||||||
|
return true;
|
||||||
|
} catch (ClassNotFoundException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
return false;
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Intenta conectar con la base de datos.
|
||||||
|
*
|
||||||
|
* @return true si pudo conectarse, false en caso contrario
|
||||||
|
*/
|
||||||
|
public static boolean connect() {
|
||||||
|
try {
|
||||||
|
System.out.print("Conectando a la base de datos...");
|
||||||
|
conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASS);
|
||||||
|
System.out.println("OK!");
|
||||||
|
return true;
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Comprueba la conexión y muestra su estado por pantalla
|
||||||
|
*
|
||||||
|
* @return true si la conexión existe y es válida, false en caso contrario
|
||||||
|
*/
|
||||||
|
public static boolean isConnected() {
|
||||||
|
// Comprobamos estado de la conexión
|
||||||
|
try {
|
||||||
|
if (conn != null && conn.isValid(0)) {
|
||||||
|
System.out.println(DB_MSQ_CONN_OK);
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
System.out.println(DB_MSQ_CONN_NO);
|
||||||
|
ex.printStackTrace();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cierra la conexión con la base de datos
|
||||||
|
*/
|
||||||
|
public static void close() {
|
||||||
|
try {
|
||||||
|
System.out.print("Cerrando la conexión...");
|
||||||
|
conn.close();
|
||||||
|
System.out.println("OK!");
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
// MÉTODOS DE TABLA CLIENTES
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
;
|
||||||
|
|
||||||
|
// Devuelve
|
||||||
|
// Los argumentos indican el tipo de ResultSet deseado
|
||||||
|
/**
|
||||||
|
* Obtiene toda la tabla clientes de la base de datos
|
||||||
|
* @param resultSetType Tipo de ResultSet
|
||||||
|
* @param resultSetConcurrency Concurrencia del ResultSet
|
||||||
|
* @return ResultSet (del tipo indicado) con la tabla, null en caso de error
|
||||||
|
*/
|
||||||
|
public static ResultSet getTablaClientes(int resultSetType, int resultSetConcurrency) {
|
||||||
|
try {
|
||||||
|
Statement stmt = conn.createStatement(resultSetType, resultSetConcurrency);
|
||||||
|
ResultSet rs = stmt.executeQuery(DB_CLI_SELECT);
|
||||||
|
//stmt.close();
|
||||||
|
return rs;
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Obtiene toda la tabla clientes de la base de datos
|
||||||
|
*
|
||||||
|
* @return ResultSet (por defecto) con la tabla, null en caso de error
|
||||||
|
*/
|
||||||
|
public static ResultSet getTablaClientes() {
|
||||||
|
return getTablaClientes(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Imprime por pantalla el contenido de la tabla clientes
|
||||||
|
*/
|
||||||
|
public static void printTablaClientes() {
|
||||||
|
try {
|
||||||
|
ResultSet rs = getTablaClientes(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
|
||||||
|
while (rs.next()) {
|
||||||
|
int id = rs.getInt(DB_CLI_ID);
|
||||||
|
String n = rs.getString(DB_CLI_NOM);
|
||||||
|
String d = rs.getString(DB_CLI_DIR);
|
||||||
|
System.out.println(id + "\t" + n + "\t" + d);
|
||||||
|
}
|
||||||
|
rs.close();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
// MÉTODOS DE UN SOLO CLIENTE
|
||||||
|
//////////////////////////////////////////////////
|
||||||
|
;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Solicita a la BD el cliente con id indicado
|
||||||
|
* @param id id del cliente
|
||||||
|
* @return ResultSet con el resultado de la consulta, null en caso de error
|
||||||
|
*/
|
||||||
|
public static ResultSet getCliente(int id) {
|
||||||
|
try {
|
||||||
|
// Realizamos la consulta SQL
|
||||||
|
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
|
||||||
|
String sql = DB_CLI_SELECT + " WHERE " + DB_CLI_ID + "='" + id + "';";
|
||||||
|
//System.out.println(sql);
|
||||||
|
ResultSet rs = stmt.executeQuery(sql);
|
||||||
|
//stmt.close();
|
||||||
|
|
||||||
|
// Si no hay primer registro entonces no existe el cliente
|
||||||
|
if (!rs.first()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Todo bien, devolvemos el cliente
|
||||||
|
return rs;
|
||||||
|
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Comprueba si en la BD existe el cliente con id indicado
|
||||||
|
*
|
||||||
|
* @param id id del cliente
|
||||||
|
* @return verdadero si existe, false en caso contrario
|
||||||
|
*/
|
||||||
|
public static boolean existsCliente(int id) {
|
||||||
|
try {
|
||||||
|
// Obtenemos el cliente
|
||||||
|
ResultSet rs = getCliente(id);
|
||||||
|
|
||||||
|
// Si rs es null, se ha producido un error
|
||||||
|
if (rs == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Si no existe primer registro
|
||||||
|
if (!rs.first()) {
|
||||||
|
rs.close();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Todo bien, existe el cliente
|
||||||
|
rs.close();
|
||||||
|
return true;
|
||||||
|
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Imprime los datos del cliente con id indicado
|
||||||
|
*
|
||||||
|
* @param id id del cliente
|
||||||
|
*/
|
||||||
|
public static void printCliente(int id) {
|
||||||
|
try {
|
||||||
|
// Obtenemos el cliente
|
||||||
|
ResultSet rs = getCliente(id);
|
||||||
|
if (rs == null || !rs.first()) {
|
||||||
|
System.out.println("Cliente " + id + " NO EXISTE");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Imprimimos su información por pantalla
|
||||||
|
int cid = rs.getInt(DB_CLI_ID);
|
||||||
|
String nombre = rs.getString(DB_CLI_NOM);
|
||||||
|
String direccion = rs.getString(DB_CLI_DIR);
|
||||||
|
System.out.println("Cliente " + cid + "\t" + nombre + "\t" + direccion);
|
||||||
|
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
System.out.println("Error al solicitar cliente " + id);
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Solicita a la BD insertar un nuevo registro cliente
|
||||||
|
*
|
||||||
|
* @param nombre nombre del cliente
|
||||||
|
* @param direccion dirección del cliente
|
||||||
|
* @return verdadero si pudo insertarlo, false en caso contrario
|
||||||
|
*/
|
||||||
|
public static boolean insertCliente(String nombre, String direccion) {
|
||||||
|
try {
|
||||||
|
// Obtenemos la tabla clientes
|
||||||
|
System.out.print("Insertando cliente " + nombre + "...");
|
||||||
|
ResultSet rs = getTablaClientes(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
|
||||||
|
|
||||||
|
// Insertamos el nuevo registro
|
||||||
|
rs.moveToInsertRow();
|
||||||
|
rs.updateString(DB_CLI_NOM, nombre);
|
||||||
|
rs.updateString(DB_CLI_DIR, direccion);
|
||||||
|
rs.insertRow();
|
||||||
|
|
||||||
|
// Todo bien, cerramos ResultSet y devolvemos true
|
||||||
|
rs.close();
|
||||||
|
System.out.println("OK!");
|
||||||
|
return true;
|
||||||
|
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Solicita a la BD modificar los datos de un cliente
|
||||||
|
*
|
||||||
|
* @param id id del cliente a modificar
|
||||||
|
* @param nombre nuevo nombre del cliente
|
||||||
|
* @param direccion nueva dirección del cliente
|
||||||
|
* @return verdadero si pudo modificarlo, false en caso contrario
|
||||||
|
*/
|
||||||
|
public static boolean updateCliente(int id, String nuevoNombre, String nuevaDireccion) {
|
||||||
|
try {
|
||||||
|
// Obtenemos el cliente
|
||||||
|
System.out.print("Actualizando cliente " + id + "... ");
|
||||||
|
ResultSet rs = getCliente(id);
|
||||||
|
|
||||||
|
// Si no existe el Resultset
|
||||||
|
if (rs == null) {
|
||||||
|
System.out.println("Error. ResultSet null.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Si tiene un primer registro, lo eliminamos
|
||||||
|
if (rs.first()) {
|
||||||
|
rs.updateString(DB_CLI_NOM, nuevoNombre);
|
||||||
|
rs.updateString(DB_CLI_DIR, nuevaDireccion);
|
||||||
|
rs.updateRow();
|
||||||
|
rs.close();
|
||||||
|
System.out.println("OK!");
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
System.out.println("ERROR. ResultSet vacío.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Solicita a la BD eliminar un cliente
|
||||||
|
*
|
||||||
|
* @param id id del cliente a eliminar
|
||||||
|
* @return verdadero si pudo eliminarlo, false en caso contrario
|
||||||
|
*/
|
||||||
|
public static boolean deleteCliente(int id) {
|
||||||
|
try {
|
||||||
|
System.out.print("Eliminando cliente " + id + "... ");
|
||||||
|
|
||||||
|
// Obtenemos el cliente
|
||||||
|
ResultSet rs = getCliente(id);
|
||||||
|
|
||||||
|
// Si no existe el Resultset
|
||||||
|
if (rs == null) {
|
||||||
|
System.out.println("ERROR. ResultSet null.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Si existe y tiene primer registro, lo eliminamos
|
||||||
|
if (rs.first()) {
|
||||||
|
rs.deleteRow();
|
||||||
|
rs.close();
|
||||||
|
System.out.println("OK!");
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
System.out.println("ERROR. ResultSet vacío.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
159
src/main/java/iesthiar/gestorClientes/GestionClientes.java
Normal file
159
src/main/java/iesthiar/gestorClientes/GestionClientes.java
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
package iesthiar.gestorClientes;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author lionel
|
||||||
|
*/
|
||||||
|
public class GestionClientes {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
DBManager.loadDriver();
|
||||||
|
DBManager.connect();
|
||||||
|
|
||||||
|
boolean salir = false;
|
||||||
|
do {
|
||||||
|
salir = menuPrincipal();
|
||||||
|
} while (!salir);
|
||||||
|
|
||||||
|
DBManager.close();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean menuPrincipal() {
|
||||||
|
System.out.println("");
|
||||||
|
System.out.println("MENU PRINCIPAL");
|
||||||
|
System.out.println("1. Listar clientes");
|
||||||
|
System.out.println("2. Nuevo cliente");
|
||||||
|
System.out.println("3. Modificar cliente");
|
||||||
|
System.out.println("4. Eliminar cliente");
|
||||||
|
System.out.println("5. Salir");
|
||||||
|
|
||||||
|
Scanner in = new Scanner(System.in);
|
||||||
|
|
||||||
|
int opcion = pideInt("Elige una opción: ");
|
||||||
|
|
||||||
|
switch (opcion) {
|
||||||
|
case 1:
|
||||||
|
opcionMostrarClientes();
|
||||||
|
return false;
|
||||||
|
case 2:
|
||||||
|
opcionNuevoCliente();
|
||||||
|
return false;
|
||||||
|
case 3:
|
||||||
|
opcionModificarCliente();
|
||||||
|
return false;
|
||||||
|
case 4:
|
||||||
|
opcionEliminarCliente();
|
||||||
|
return false;
|
||||||
|
case 5:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
System.out.println("Opción elegida incorrecta");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int pideInt(String mensaje){
|
||||||
|
|
||||||
|
while(true) {
|
||||||
|
try {
|
||||||
|
System.out.print(mensaje);
|
||||||
|
Scanner in = new Scanner(System.in);
|
||||||
|
int valor = in.nextInt();
|
||||||
|
//in.nextLine();
|
||||||
|
return valor;
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println("No has introducido un número entero. Vuelve a intentarlo.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String pideLinea(String mensaje){
|
||||||
|
|
||||||
|
while(true) {
|
||||||
|
try {
|
||||||
|
System.out.print(mensaje);
|
||||||
|
Scanner in = new Scanner(System.in);
|
||||||
|
String linea = in.nextLine();
|
||||||
|
return linea;
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println("No has introducido una cadena de texto. Vuelve a intentarlo.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void opcionMostrarClientes() {
|
||||||
|
System.out.println("Listado de Clientes:");
|
||||||
|
DBManager.printTablaClientes();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void opcionNuevoCliente() {
|
||||||
|
Scanner in = new Scanner(System.in);
|
||||||
|
|
||||||
|
System.out.println("Introduce los datos del nuevo cliente:");
|
||||||
|
String nombre = pideLinea("Nombre: ");
|
||||||
|
String direccion = pideLinea("Dirección: ");
|
||||||
|
|
||||||
|
boolean res = DBManager.insertCliente(nombre, direccion);
|
||||||
|
|
||||||
|
if (res) {
|
||||||
|
System.out.println("Cliente registrado correctamente");
|
||||||
|
} else {
|
||||||
|
System.out.println("Error :(");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void opcionModificarCliente() {
|
||||||
|
Scanner in = new Scanner(System.in);
|
||||||
|
|
||||||
|
int id = pideInt("Indica el id del cliente a modificar: ");
|
||||||
|
|
||||||
|
// Comprobamos si existe el cliente
|
||||||
|
if (!DBManager.existsCliente(id)) {
|
||||||
|
System.out.println("El cliente " + id + " no existe.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mostramos datos del cliente a modificar
|
||||||
|
DBManager.printCliente(id);
|
||||||
|
|
||||||
|
// Solicitamos los nuevos datos
|
||||||
|
String nombre = pideLinea("Nuevo nombre: ");
|
||||||
|
String direccion = pideLinea("Nueva dirección: ");
|
||||||
|
|
||||||
|
// Registramos los cambios
|
||||||
|
boolean res = DBManager.updateCliente(id, nombre, direccion);
|
||||||
|
|
||||||
|
if (res) {
|
||||||
|
System.out.println("Cliente modificado correctamente");
|
||||||
|
} else {
|
||||||
|
System.out.println("Error :(");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void opcionEliminarCliente() {
|
||||||
|
Scanner in = new Scanner(System.in);
|
||||||
|
|
||||||
|
int id = pideInt("Indica el id del cliente a eliminar: ");
|
||||||
|
|
||||||
|
// Comprobamos si existe el cliente
|
||||||
|
if (!DBManager.existsCliente(id)) {
|
||||||
|
System.out.println("El cliente " + id + " no existe.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Eliminamos el cliente
|
||||||
|
boolean res = DBManager.deleteCliente(id);
|
||||||
|
|
||||||
|
if (res) {
|
||||||
|
System.out.println("Cliente eliminado correctamente");
|
||||||
|
} else {
|
||||||
|
System.out.println("Error :(");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
744
src/main/java/iesthiar/gestorClientes/GestionClientesIGU.java
Normal file
744
src/main/java/iesthiar/gestorClientes/GestionClientesIGU.java
Normal file
@@ -0,0 +1,744 @@
|
|||||||
|
package iesthiar.gestorClientes;
|
||||||
|
|
||||||
|
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
|
|
||||||
|
public class GestionClientesIGU extends javax.swing.JFrame {
|
||||||
|
|
||||||
|
private ResultSet rsClientes;
|
||||||
|
private boolean clienteValido = false;
|
||||||
|
|
||||||
|
public GestionClientesIGU() {
|
||||||
|
|
||||||
|
// Inicilización de componentes gráficos
|
||||||
|
initComponents();
|
||||||
|
|
||||||
|
// Cargamos driver y conectamos con la BD
|
||||||
|
DBManager.loadDriver();
|
||||||
|
DBManager.connect();
|
||||||
|
|
||||||
|
// Obtenemos el ResultSet de clientes y mostramos el primero
|
||||||
|
obtenerClientes();
|
||||||
|
muestraClientePrimero();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is called from within the constructor to initialize the form.
|
||||||
|
* WARNING: Do NOT modify this code. The content of this method is always
|
||||||
|
* regenerated by the Form Editor.
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
||||||
|
private void initComponents() {
|
||||||
|
|
||||||
|
jfNuevoCliente = new javax.swing.JFrame();
|
||||||
|
lblVNCTitulo = new javax.swing.JLabel();
|
||||||
|
jpVNC = new javax.swing.JPanel();
|
||||||
|
lblVNCNombre = new javax.swing.JLabel();
|
||||||
|
txtVNCNombre = new javax.swing.JTextField();
|
||||||
|
lblVNCDireccion = new javax.swing.JLabel();
|
||||||
|
txtVNCDireccion = new javax.swing.JTextField();
|
||||||
|
btnVNCAceptar = new javax.swing.JButton();
|
||||||
|
btnVNCCancelar = new javax.swing.JButton();
|
||||||
|
jfEditarCliente = new javax.swing.JFrame();
|
||||||
|
lblVECTitulo = new javax.swing.JLabel();
|
||||||
|
jpVEC = new javax.swing.JPanel();
|
||||||
|
lblVECId = new javax.swing.JLabel();
|
||||||
|
lblVECIdCliente = new javax.swing.JLabel();
|
||||||
|
lblVECNombre = new javax.swing.JLabel();
|
||||||
|
txtVECNombre = new javax.swing.JTextField();
|
||||||
|
lblVECDireccion = new javax.swing.JLabel();
|
||||||
|
txtVECDireccion = new javax.swing.JTextField();
|
||||||
|
btnVECAceptar = new javax.swing.JButton();
|
||||||
|
btnVECCancelar = new javax.swing.JButton();
|
||||||
|
jPanelVP = new javax.swing.JPanel();
|
||||||
|
lblTitulo = new javax.swing.JLabel();
|
||||||
|
btnPrimero = new javax.swing.JButton();
|
||||||
|
btnAnterior = new javax.swing.JButton();
|
||||||
|
btnSiguiente = new javax.swing.JButton();
|
||||||
|
btnUltimo = new javax.swing.JButton();
|
||||||
|
lblId = new javax.swing.JLabel();
|
||||||
|
lblIdCliente = new javax.swing.JLabel();
|
||||||
|
lblNombre = new javax.swing.JLabel();
|
||||||
|
lblNombreCliente = new javax.swing.JLabel();
|
||||||
|
lblDireccion = new javax.swing.JLabel();
|
||||||
|
lblDireccionCliente = new javax.swing.JLabel();
|
||||||
|
btnNuevo = new javax.swing.JButton();
|
||||||
|
btnEditar = new javax.swing.JButton();
|
||||||
|
btnEliminar = new javax.swing.JButton();
|
||||||
|
|
||||||
|
jfNuevoCliente.setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
|
||||||
|
jfNuevoCliente.setResizable(false);
|
||||||
|
jfNuevoCliente.setSize(new java.awt.Dimension(262, 185));
|
||||||
|
|
||||||
|
lblVNCTitulo.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
|
||||||
|
lblVNCTitulo.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
||||||
|
lblVNCTitulo.setText("Nuevo Cliente");
|
||||||
|
|
||||||
|
lblVNCNombre.setFont(new java.awt.Font("Noto Sans", 1, 12)); // NOI18N
|
||||||
|
lblVNCNombre.setText("Nombre:");
|
||||||
|
|
||||||
|
lblVNCDireccion.setFont(new java.awt.Font("Noto Sans", 1, 12)); // NOI18N
|
||||||
|
lblVNCDireccion.setText("Direccion:");
|
||||||
|
|
||||||
|
btnVNCAceptar.setText("Aceptar");
|
||||||
|
btnVNCAceptar.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
btnVNCAceptarActionPerformed(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
btnVNCCancelar.setText("Cancelar");
|
||||||
|
btnVNCCancelar.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
btnVNCCancelarActionPerformed(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
javax.swing.GroupLayout jpVNCLayout = new javax.swing.GroupLayout(jpVNC);
|
||||||
|
jpVNC.setLayout(jpVNCLayout);
|
||||||
|
jpVNCLayout.setHorizontalGroup(
|
||||||
|
jpVNCLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(jpVNCLayout.createSequentialGroup()
|
||||||
|
.addGroup(jpVNCLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(lblVNCNombre)
|
||||||
|
.addComponent(lblVNCDireccion))
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addGroup(jpVNCLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(txtVNCNombre)
|
||||||
|
.addComponent(txtVNCDireccion)))
|
||||||
|
.addGroup(jpVNCLayout.createSequentialGroup()
|
||||||
|
.addGap(41, 41, 41)
|
||||||
|
.addComponent(btnVNCAceptar)
|
||||||
|
.addGap(18, 18, 18)
|
||||||
|
.addComponent(btnVNCCancelar)
|
||||||
|
.addContainerGap(61, Short.MAX_VALUE))
|
||||||
|
);
|
||||||
|
jpVNCLayout.setVerticalGroup(
|
||||||
|
jpVNCLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(jpVNCLayout.createSequentialGroup()
|
||||||
|
.addGroup(jpVNCLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(lblVNCNombre)
|
||||||
|
.addComponent(txtVNCNombre, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addGroup(jpVNCLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(lblVNCDireccion)
|
||||||
|
.addComponent(txtVNCDireccion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
|
.addGap(18, 18, 18)
|
||||||
|
.addGroup(jpVNCLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(btnVNCAceptar)
|
||||||
|
.addComponent(btnVNCCancelar))
|
||||||
|
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||||
|
);
|
||||||
|
|
||||||
|
javax.swing.GroupLayout jfNuevoClienteLayout = new javax.swing.GroupLayout(jfNuevoCliente.getContentPane());
|
||||||
|
jfNuevoCliente.getContentPane().setLayout(jfNuevoClienteLayout);
|
||||||
|
jfNuevoClienteLayout.setHorizontalGroup(
|
||||||
|
jfNuevoClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(jfNuevoClienteLayout.createSequentialGroup()
|
||||||
|
.addContainerGap()
|
||||||
|
.addGroup(jfNuevoClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(jpVNC, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
|
.addComponent(lblVNCTitulo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||||
|
.addContainerGap())
|
||||||
|
);
|
||||||
|
jfNuevoClienteLayout.setVerticalGroup(
|
||||||
|
jfNuevoClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jfNuevoClienteLayout.createSequentialGroup()
|
||||||
|
.addContainerGap()
|
||||||
|
.addComponent(lblVNCTitulo, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
|
.addComponent(jpVNC, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addContainerGap())
|
||||||
|
);
|
||||||
|
|
||||||
|
jfEditarCliente.setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
|
||||||
|
jfEditarCliente.setResizable(false);
|
||||||
|
jfEditarCliente.setSize(new java.awt.Dimension(262, 214));
|
||||||
|
|
||||||
|
lblVECTitulo.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
|
||||||
|
lblVECTitulo.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
||||||
|
lblVECTitulo.setText("Editar Cliente");
|
||||||
|
|
||||||
|
lblVECId.setFont(new java.awt.Font("Noto Sans", 1, 12)); // NOI18N
|
||||||
|
lblVECId.setText("ID:");
|
||||||
|
|
||||||
|
lblVECIdCliente.setText(" ");
|
||||||
|
|
||||||
|
lblVECNombre.setFont(new java.awt.Font("Noto Sans", 1, 12)); // NOI18N
|
||||||
|
lblVECNombre.setText("Nombre:");
|
||||||
|
|
||||||
|
lblVECDireccion.setFont(new java.awt.Font("Noto Sans", 1, 12)); // NOI18N
|
||||||
|
lblVECDireccion.setText("Direccion:");
|
||||||
|
|
||||||
|
btnVECAceptar.setText("Aceptar");
|
||||||
|
btnVECAceptar.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
btnVECAceptarActionPerformed(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
btnVECCancelar.setText("Cancelar");
|
||||||
|
btnVECCancelar.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
btnVECCancelarActionPerformed(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
javax.swing.GroupLayout jpVECLayout = new javax.swing.GroupLayout(jpVEC);
|
||||||
|
jpVEC.setLayout(jpVECLayout);
|
||||||
|
jpVECLayout.setHorizontalGroup(
|
||||||
|
jpVECLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(jpVECLayout.createSequentialGroup()
|
||||||
|
.addGap(41, 41, 41)
|
||||||
|
.addComponent(btnVECAceptar)
|
||||||
|
.addGap(18, 18, 18)
|
||||||
|
.addComponent(btnVECCancelar)
|
||||||
|
.addContainerGap(61, Short.MAX_VALUE))
|
||||||
|
.addGroup(jpVECLayout.createSequentialGroup()
|
||||||
|
.addGroup(jpVECLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(lblVECDireccion)
|
||||||
|
.addComponent(lblVECNombre)
|
||||||
|
.addComponent(lblVECId))
|
||||||
|
.addGap(6, 6, 6)
|
||||||
|
.addGroup(jpVECLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(jpVECLayout.createSequentialGroup()
|
||||||
|
.addComponent(lblVECIdCliente)
|
||||||
|
.addGap(0, 0, Short.MAX_VALUE))
|
||||||
|
.addComponent(txtVECNombre)
|
||||||
|
.addComponent(txtVECDireccion)))
|
||||||
|
);
|
||||||
|
jpVECLayout.setVerticalGroup(
|
||||||
|
jpVECLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(jpVECLayout.createSequentialGroup()
|
||||||
|
.addGroup(jpVECLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(lblVECId)
|
||||||
|
.addComponent(lblVECIdCliente))
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||||
|
.addGroup(jpVECLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(lblVECNombre)
|
||||||
|
.addComponent(txtVECNombre, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||||
|
.addGroup(jpVECLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(lblVECDireccion)
|
||||||
|
.addComponent(txtVECDireccion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||||
|
.addGroup(jpVECLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(btnVECAceptar)
|
||||||
|
.addComponent(btnVECCancelar))
|
||||||
|
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||||
|
);
|
||||||
|
|
||||||
|
javax.swing.GroupLayout jfEditarClienteLayout = new javax.swing.GroupLayout(jfEditarCliente.getContentPane());
|
||||||
|
jfEditarCliente.getContentPane().setLayout(jfEditarClienteLayout);
|
||||||
|
jfEditarClienteLayout.setHorizontalGroup(
|
||||||
|
jfEditarClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(jfEditarClienteLayout.createSequentialGroup()
|
||||||
|
.addContainerGap()
|
||||||
|
.addGroup(jfEditarClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(jpVEC, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
|
.addComponent(lblVECTitulo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||||
|
.addContainerGap())
|
||||||
|
);
|
||||||
|
jfEditarClienteLayout.setVerticalGroup(
|
||||||
|
jfEditarClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jfEditarClienteLayout.createSequentialGroup()
|
||||||
|
.addContainerGap()
|
||||||
|
.addComponent(lblVECTitulo, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addComponent(jpVEC, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
|
.addContainerGap())
|
||||||
|
);
|
||||||
|
|
||||||
|
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
|
||||||
|
setResizable(false);
|
||||||
|
addWindowListener(new java.awt.event.WindowAdapter() {
|
||||||
|
public void windowClosed(java.awt.event.WindowEvent evt) {
|
||||||
|
formWindowClosed(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
lblTitulo.setFont(new java.awt.Font("Tahoma", 0, 36)); // NOI18N
|
||||||
|
lblTitulo.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
||||||
|
lblTitulo.setText("Gestor de clientes");
|
||||||
|
|
||||||
|
btnPrimero.setText("|<");
|
||||||
|
btnPrimero.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
btnPrimeroActionPerformed(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
btnAnterior.setText("<<");
|
||||||
|
btnAnterior.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
btnAnteriorActionPerformed(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
btnSiguiente.setText(">>");
|
||||||
|
btnSiguiente.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
btnSiguienteActionPerformed(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
btnUltimo.setText(">|");
|
||||||
|
btnUltimo.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
btnUltimoActionPerformed(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
lblId.setFont(new java.awt.Font("Noto Sans", 1, 12)); // NOI18N
|
||||||
|
lblId.setText("ID:");
|
||||||
|
|
||||||
|
lblIdCliente.setText(" ");
|
||||||
|
|
||||||
|
lblNombre.setFont(new java.awt.Font("Noto Sans", 1, 12)); // NOI18N
|
||||||
|
lblNombre.setText("Nombre:");
|
||||||
|
|
||||||
|
lblNombreCliente.setText(" ");
|
||||||
|
|
||||||
|
lblDireccion.setFont(new java.awt.Font("Noto Sans", 1, 12)); // NOI18N
|
||||||
|
lblDireccion.setText("Dirección:");
|
||||||
|
|
||||||
|
lblDireccionCliente.setText(" ");
|
||||||
|
|
||||||
|
btnNuevo.setText("NUEVO");
|
||||||
|
btnNuevo.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
btnNuevoActionPerformed(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
btnEditar.setText("EDITAR");
|
||||||
|
btnEditar.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
btnEditarActionPerformed(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
btnEliminar.setText("ELIMINAR");
|
||||||
|
btnEliminar.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||||
|
btnEliminarActionPerformed(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
javax.swing.GroupLayout jPanelVPLayout = new javax.swing.GroupLayout(jPanelVP);
|
||||||
|
jPanelVP.setLayout(jPanelVPLayout);
|
||||||
|
jPanelVPLayout.setHorizontalGroup(
|
||||||
|
jPanelVPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(lblTitulo, javax.swing.GroupLayout.DEFAULT_SIZE, 519, Short.MAX_VALUE)
|
||||||
|
.addGroup(jPanelVPLayout.createSequentialGroup()
|
||||||
|
.addGap(24, 24, 24)
|
||||||
|
.addGroup(jPanelVPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(jPanelVPLayout.createSequentialGroup()
|
||||||
|
.addGroup(jPanelVPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(jPanelVPLayout.createSequentialGroup()
|
||||||
|
.addComponent(lblNombre)
|
||||||
|
.addGap(18, 18, 18)
|
||||||
|
.addGroup(jPanelVPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(lblIdCliente)
|
||||||
|
.addComponent(lblNombreCliente)))
|
||||||
|
.addGroup(jPanelVPLayout.createSequentialGroup()
|
||||||
|
.addComponent(lblDireccion)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||||
|
.addComponent(lblDireccionCliente)))
|
||||||
|
.addGap(0, 0, Short.MAX_VALUE))
|
||||||
|
.addGroup(jPanelVPLayout.createSequentialGroup()
|
||||||
|
.addComponent(lblId)
|
||||||
|
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
|
||||||
|
.addGroup(jPanelVPLayout.createSequentialGroup()
|
||||||
|
.addContainerGap()
|
||||||
|
.addComponent(btnPrimero, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addComponent(btnAnterior, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addComponent(btnSiguiente, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addComponent(btnUltimo, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addGap(50, 50, 50)
|
||||||
|
.addComponent(btnNuevo)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addComponent(btnEditar)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addComponent(btnEliminar)
|
||||||
|
.addGap(0, 0, Short.MAX_VALUE))
|
||||||
|
);
|
||||||
|
jPanelVPLayout.setVerticalGroup(
|
||||||
|
jPanelVPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(jPanelVPLayout.createSequentialGroup()
|
||||||
|
.addComponent(lblTitulo, javax.swing.GroupLayout.PREFERRED_SIZE, 55, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addGroup(jPanelVPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(btnPrimero)
|
||||||
|
.addComponent(btnAnterior)
|
||||||
|
.addComponent(btnSiguiente)
|
||||||
|
.addComponent(btnUltimo)
|
||||||
|
.addComponent(btnNuevo)
|
||||||
|
.addComponent(btnEditar)
|
||||||
|
.addComponent(btnEliminar))
|
||||||
|
.addGap(24, 24, 24)
|
||||||
|
.addGroup(jPanelVPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(lblId)
|
||||||
|
.addComponent(lblIdCliente))
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||||
|
.addGroup(jPanelVPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(lblNombre)
|
||||||
|
.addComponent(lblNombreCliente))
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||||
|
.addGroup(jPanelVPLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(lblDireccion)
|
||||||
|
.addComponent(lblDireccionCliente))
|
||||||
|
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||||
|
);
|
||||||
|
|
||||||
|
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
||||||
|
getContentPane().setLayout(layout);
|
||||||
|
layout.setHorizontalGroup(
|
||||||
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addContainerGap()
|
||||||
|
.addComponent(jPanelVP, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
|
.addContainerGap())
|
||||||
|
);
|
||||||
|
layout.setVerticalGroup(
|
||||||
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addContainerGap()
|
||||||
|
.addComponent(jPanelVP, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||||
|
);
|
||||||
|
|
||||||
|
pack();
|
||||||
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
|
private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed
|
||||||
|
|
||||||
|
// Cerramos el ResultSet de clientes
|
||||||
|
try {
|
||||||
|
rsClientes.close();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cerramos la conexión a la base de datos
|
||||||
|
DBManager.close();
|
||||||
|
}//GEN-LAST:event_formWindowClosed
|
||||||
|
|
||||||
|
private void btnPrimeroActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnPrimeroActionPerformed
|
||||||
|
muestraClientePrimero();
|
||||||
|
}//GEN-LAST:event_btnPrimeroActionPerformed
|
||||||
|
|
||||||
|
private void btnAnteriorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAnteriorActionPerformed
|
||||||
|
muestraClienteAnterior();
|
||||||
|
}//GEN-LAST:event_btnAnteriorActionPerformed
|
||||||
|
|
||||||
|
private void btnSiguienteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSiguienteActionPerformed
|
||||||
|
muestraClienteSiguiente();
|
||||||
|
}//GEN-LAST:event_btnSiguienteActionPerformed
|
||||||
|
|
||||||
|
private void btnUltimoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnUltimoActionPerformed
|
||||||
|
muestraClienteUltimo();
|
||||||
|
}//GEN-LAST:event_btnUltimoActionPerformed
|
||||||
|
|
||||||
|
// Pide los clientes a la base de datos y los guarda en ResultSet rsClientes
|
||||||
|
private void obtenerClientes() {
|
||||||
|
try {
|
||||||
|
// Cerramos el ResultSet actual
|
||||||
|
if (rsClientes != null) {
|
||||||
|
rsClientes.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pedimos la tabla clientes a la base de datos
|
||||||
|
rsClientes = DBManager.getTablaClientes(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
|
||||||
|
|
||||||
|
// Movemos cursor al primero
|
||||||
|
clienteValido = rsClientes.first();
|
||||||
|
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void muestraClientePrimero() {
|
||||||
|
try {
|
||||||
|
clienteValido = rsClientes.first();
|
||||||
|
muestraDatosCliente();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
muestraVentanaErrorSQL(ex);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
muestraVentanaError(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void muestraClienteAnterior() {
|
||||||
|
try {
|
||||||
|
if (!rsClientes.isFirst()) {
|
||||||
|
clienteValido = rsClientes.previous();
|
||||||
|
muestraDatosCliente();
|
||||||
|
}
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
muestraVentanaErrorSQL(ex);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
muestraVentanaError(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void muestraClienteSiguiente() {
|
||||||
|
try {
|
||||||
|
if (!rsClientes.isLast()) {
|
||||||
|
clienteValido = rsClientes.next();
|
||||||
|
muestraDatosCliente();
|
||||||
|
}
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
muestraVentanaErrorSQL(ex);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
muestraVentanaError(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void muestraClienteUltimo() {
|
||||||
|
try {
|
||||||
|
clienteValido = rsClientes.last();
|
||||||
|
muestraDatosCliente();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
muestraVentanaErrorSQL(ex);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
muestraVentanaError(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Muestra en los componentes los datos del cliente al que apunta el cursor de rsclientes
|
||||||
|
private void muestraDatosCliente() {
|
||||||
|
|
||||||
|
int id = 0;
|
||||||
|
String nombre = "";
|
||||||
|
String direccion = "";
|
||||||
|
|
||||||
|
// Obtenemos los datos del cliente actual (si es válido)
|
||||||
|
if (clienteValido) {
|
||||||
|
try {
|
||||||
|
id = rsClientes.getInt("id");
|
||||||
|
nombre = rsClientes.getString("nombre");
|
||||||
|
direccion = rsClientes.getString("direccion");
|
||||||
|
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
muestraVentanaError(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mostramos datos en la ventana
|
||||||
|
lblIdCliente.setText("" + id);
|
||||||
|
lblNombreCliente.setText(nombre);
|
||||||
|
lblDireccionCliente.setText(direccion);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void btnEditarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEditarActionPerformed
|
||||||
|
|
||||||
|
if (!clienteValido) {
|
||||||
|
muestraVentanaAviso("No se puede editar el cliente.\n¿Es posible que no haya clientes?");
|
||||||
|
} else {
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Obtenemos los datos del cliente actual
|
||||||
|
int id = rsClientes.getInt("id");
|
||||||
|
lblVECIdCliente.setText("" + id);
|
||||||
|
String nombre = rsClientes.getString("nombre");
|
||||||
|
txtVECNombre.setText(nombre);
|
||||||
|
String direccion = rsClientes.getString("direccion");
|
||||||
|
txtVECDireccion.setText(direccion);
|
||||||
|
|
||||||
|
// Ocultamos ventana principal
|
||||||
|
this.setVisible(false);
|
||||||
|
|
||||||
|
// Mostramos ventana de editar cliente
|
||||||
|
jfEditarCliente.setVisible(true);
|
||||||
|
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
muestraVentanaError(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}//GEN-LAST:event_btnEditarActionPerformed
|
||||||
|
|
||||||
|
private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEliminarActionPerformed
|
||||||
|
|
||||||
|
if (!clienteValido) {
|
||||||
|
muestraVentanaAviso("No se puede eliminar el cliente.\n¿Es posible que no haya clientes?");
|
||||||
|
} else {
|
||||||
|
// Ventana para que el usuario confirme
|
||||||
|
boolean aceptado = muestraVentanaAceptarCancelar("¿Está seguro de que desea eliminar el cliente?");
|
||||||
|
|
||||||
|
// Si respondió que sí, eliminamos el cliente y actualizamos datos
|
||||||
|
if (aceptado) {
|
||||||
|
try {
|
||||||
|
// Eliminamos el cliente actual
|
||||||
|
int id = Integer.parseInt(lblIdCliente.getText());
|
||||||
|
DBManager.deleteCliente(id);
|
||||||
|
|
||||||
|
// Actualizamos datos de clientes
|
||||||
|
obtenerClientes();
|
||||||
|
muestraDatosCliente();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
muestraVentanaError(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}//GEN-LAST:event_btnEliminarActionPerformed
|
||||||
|
|
||||||
|
private void btnNuevoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNuevoActionPerformed
|
||||||
|
// Ocultamos ventana principal
|
||||||
|
this.setVisible(false);
|
||||||
|
|
||||||
|
// Mostramos ventana de nuevo cliente con campos vacíos
|
||||||
|
txtVNCNombre.setText("");
|
||||||
|
txtVNCDireccion.setText("");
|
||||||
|
jfNuevoCliente.setVisible(true);
|
||||||
|
}//GEN-LAST:event_btnNuevoActionPerformed
|
||||||
|
|
||||||
|
private void btnVNCAceptarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnVNCAceptarActionPerformed
|
||||||
|
// Registramos nuevo cliente en la base de datos
|
||||||
|
String nombre = txtVNCNombre.getText();
|
||||||
|
String direccion = txtVNCDireccion.getText();
|
||||||
|
DBManager.insertCliente(nombre, direccion);
|
||||||
|
|
||||||
|
// Ocultamos ventana de nuevo cliente y mostramos ventana principal
|
||||||
|
jfNuevoCliente.setVisible(false);
|
||||||
|
this.setVisible(true);
|
||||||
|
|
||||||
|
// Actualizamos datos y mostramos el último
|
||||||
|
obtenerClientes();
|
||||||
|
muestraClienteUltimo();
|
||||||
|
}//GEN-LAST:event_btnVNCAceptarActionPerformed
|
||||||
|
|
||||||
|
private void btnVNCCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnVNCCancelarActionPerformed
|
||||||
|
jfNuevoCliente.setVisible(false);
|
||||||
|
this.setVisible(true);
|
||||||
|
}//GEN-LAST:event_btnVNCCancelarActionPerformed
|
||||||
|
|
||||||
|
private void btnVECAceptarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnVECAceptarActionPerformed
|
||||||
|
// Registramos nuevo cliente en la base de datos
|
||||||
|
int id = Integer.parseInt(lblVECIdCliente.getText());
|
||||||
|
String nombre = txtVECNombre.getText();
|
||||||
|
String direccion = txtVECDireccion.getText();
|
||||||
|
DBManager.updateCliente(id, nombre, direccion);
|
||||||
|
|
||||||
|
// Ocultamos ventana de nuevo cliente y mostramos ventana principal
|
||||||
|
jfEditarCliente.setVisible(false);
|
||||||
|
this.setVisible(true);
|
||||||
|
|
||||||
|
// Actualizamos datos y mostramos el último
|
||||||
|
obtenerClientes();
|
||||||
|
muestraClientePrimero();
|
||||||
|
}//GEN-LAST:event_btnVECAceptarActionPerformed
|
||||||
|
|
||||||
|
private void btnVECCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnVECCancelarActionPerformed
|
||||||
|
jfEditarCliente.setVisible(false);
|
||||||
|
this.setVisible(true);
|
||||||
|
}//GEN-LAST:event_btnVECCancelarActionPerformed
|
||||||
|
|
||||||
|
// Muestra una ventana de error tipo SQLException
|
||||||
|
private void muestraVentanaErrorSQL(SQLException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
JOptionPane.showMessageDialog(this, "Error SQL:\n" + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Muestra una ventana de error tipo Exception
|
||||||
|
private void muestraVentanaError(Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
JOptionPane.showMessageDialog(this, "Error inesperado:\n" + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Muestra una ventana de aviso con el mensaje indicado
|
||||||
|
private void muestraVentanaAviso(String mensaje) {
|
||||||
|
JOptionPane.showMessageDialog(this, mensaje, "Aviso", JOptionPane.WARNING_MESSAGE);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Muestra una ventana de aceptar/cancelar y devuelve true si le dió a aceptar
|
||||||
|
private boolean muestraVentanaAceptarCancelar(String mensaje) {
|
||||||
|
int result = JOptionPane.showConfirmDialog(this, mensaje, "Confirme la acción", JOptionPane.OK_CANCEL_OPTION);
|
||||||
|
return (result == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String args[]) {
|
||||||
|
/* Set the Nimbus look and feel */
|
||||||
|
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
|
||||||
|
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
|
||||||
|
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
|
||||||
|
*/
|
||||||
|
try {
|
||||||
|
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
|
||||||
|
if ("Nimbus".equals(info.getName())) {
|
||||||
|
javax.swing.UIManager.setLookAndFeel(info.getClassName());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (ClassNotFoundException ex) {
|
||||||
|
java.util.logging.Logger.getLogger(GestionClientesIGU.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
|
||||||
|
} catch (InstantiationException ex) {
|
||||||
|
java.util.logging.Logger.getLogger(GestionClientesIGU.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
|
||||||
|
} catch (IllegalAccessException ex) {
|
||||||
|
java.util.logging.Logger.getLogger(GestionClientesIGU.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
|
||||||
|
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
|
||||||
|
java.util.logging.Logger.getLogger(GestionClientesIGU.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
//</editor-fold>
|
||||||
|
//</editor-fold>
|
||||||
|
//</editor-fold>
|
||||||
|
//</editor-fold>
|
||||||
|
//</editor-fold>
|
||||||
|
//</editor-fold>
|
||||||
|
//</editor-fold>
|
||||||
|
//</editor-fold>
|
||||||
|
|
||||||
|
/* Create and display the form */
|
||||||
|
java.awt.EventQueue.invokeLater(new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
new GestionClientesIGU().setVisible(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||||
|
private javax.swing.JButton btnAnterior;
|
||||||
|
private javax.swing.JButton btnEditar;
|
||||||
|
private javax.swing.JButton btnEliminar;
|
||||||
|
private javax.swing.JButton btnNuevo;
|
||||||
|
private javax.swing.JButton btnPrimero;
|
||||||
|
private javax.swing.JButton btnSiguiente;
|
||||||
|
private javax.swing.JButton btnUltimo;
|
||||||
|
private javax.swing.JButton btnVECAceptar;
|
||||||
|
private javax.swing.JButton btnVECCancelar;
|
||||||
|
private javax.swing.JButton btnVNCAceptar;
|
||||||
|
private javax.swing.JButton btnVNCCancelar;
|
||||||
|
private javax.swing.JPanel jPanelVP;
|
||||||
|
private javax.swing.JFrame jfEditarCliente;
|
||||||
|
private javax.swing.JFrame jfNuevoCliente;
|
||||||
|
private javax.swing.JPanel jpVEC;
|
||||||
|
private javax.swing.JPanel jpVNC;
|
||||||
|
private javax.swing.JLabel lblDireccion;
|
||||||
|
private javax.swing.JLabel lblDireccionCliente;
|
||||||
|
private javax.swing.JLabel lblId;
|
||||||
|
private javax.swing.JLabel lblIdCliente;
|
||||||
|
private javax.swing.JLabel lblNombre;
|
||||||
|
private javax.swing.JLabel lblNombreCliente;
|
||||||
|
private javax.swing.JLabel lblTitulo;
|
||||||
|
private javax.swing.JLabel lblVECDireccion;
|
||||||
|
private javax.swing.JLabel lblVECId;
|
||||||
|
private javax.swing.JLabel lblVECIdCliente;
|
||||||
|
private javax.swing.JLabel lblVECNombre;
|
||||||
|
private javax.swing.JLabel lblVECTitulo;
|
||||||
|
private javax.swing.JLabel lblVNCDireccion;
|
||||||
|
private javax.swing.JLabel lblVNCNombre;
|
||||||
|
private javax.swing.JLabel lblVNCTitulo;
|
||||||
|
private javax.swing.JTextField txtVECDireccion;
|
||||||
|
private javax.swing.JTextField txtVECNombre;
|
||||||
|
private javax.swing.JTextField txtVNCDireccion;
|
||||||
|
private javax.swing.JTextField txtVNCNombre;
|
||||||
|
// End of variables declaration//GEN-END:variables
|
||||||
|
}
|
||||||
74
src/main/java/iesthiar/gestorClientes/tienda.sql
Normal file
74
src/main/java/iesthiar/gestorClientes/tienda.sql
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
-- phpMyAdmin SQL Dump
|
||||||
|
-- version 5.0.2
|
||||||
|
-- https://www.phpmyadmin.net/
|
||||||
|
--
|
||||||
|
-- Servidor: localhost
|
||||||
|
-- Tiempo de generación: 30-04-2020 a las 10:39:43
|
||||||
|
-- Versión del servidor: 10.4.11-MariaDB
|
||||||
|
-- Versión de PHP: 7.4.4
|
||||||
|
|
||||||
|
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
|
||||||
|
START TRANSACTION;
|
||||||
|
SET time_zone = "+00:00";
|
||||||
|
|
||||||
|
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||||
|
/*!40101 SET NAMES utf8mb4 */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Base de datos: `tienda`
|
||||||
|
--
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Estructura de tabla para la tabla `clientes`
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE `clientes` (
|
||||||
|
`id` int(11) NOT NULL,
|
||||||
|
`nombre` varchar(50) NOT NULL,
|
||||||
|
`direccion` varchar(100) NOT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Volcado de datos para la tabla `clientes`
|
||||||
|
--
|
||||||
|
|
||||||
|
INSERT INTO `clientes` (`id`, `nombre`, `direccion`) VALUES
|
||||||
|
(1, 'Lionel', 'Valencia'),
|
||||||
|
(2, 'Sergi', 'Valencia'),
|
||||||
|
(3, 'Alfredo', 'Valencia'),
|
||||||
|
(4, 'Paco', 'Valencia'),
|
||||||
|
(5, 'Maria', 'Castellón'),
|
||||||
|
(6, 'Pepito', 'Alicante'),
|
||||||
|
(7, 'Luis', 'Elx'),
|
||||||
|
(8, 'Antonia', 'Xàtiva'),
|
||||||
|
(9, 'Carmen', 'Paterna');
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Índices para tablas volcadas
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indices de la tabla `clientes`
|
||||||
|
--
|
||||||
|
ALTER TABLE `clientes`
|
||||||
|
ADD PRIMARY KEY (`id`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT de las tablas volcadas
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT de la tabla `clientes`
|
||||||
|
--
|
||||||
|
ALTER TABLE `clientes`
|
||||||
|
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||||
35
src/main/java/iesthiar/gestorClientesDAO/App.java
Normal file
35
src/main/java/iesthiar/gestorClientesDAO/App.java
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
package iesthiar.gestorClientesDAO;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import javafx.application.Application;
|
||||||
|
import javafx.fxml.FXMLLoader;
|
||||||
|
import javafx.scene.Parent;
|
||||||
|
import javafx.scene.Scene;
|
||||||
|
import javafx.stage.Stage;
|
||||||
|
|
||||||
|
public class App extends Application {
|
||||||
|
|
||||||
|
private static Scene scene;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void start(Stage stage) throws IOException {
|
||||||
|
scene = new Scene(loadFXML("gestorClientes"), 640, 480);
|
||||||
|
stage.setScene(scene);
|
||||||
|
stage.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void setRoot(String fxml) throws IOException {
|
||||||
|
scene.setRoot(loadFXML(fxml));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Parent loadFXML(String fxml) throws IOException {
|
||||||
|
FXMLLoader fxmlLoader = new FXMLLoader(App.class.getResource(fxml + ".fxml"));
|
||||||
|
return fxmlLoader.load();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
launch();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
50
src/main/java/iesthiar/gestorClientesDAO/Cliente.java
Normal file
50
src/main/java/iesthiar/gestorClientesDAO/Cliente.java
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
package iesthiar.gestorClientesDAO;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
public class Cliente implements Serializable {
|
||||||
|
private static final long serialVersionUID=1L;
|
||||||
|
long id;
|
||||||
|
String nombre;
|
||||||
|
String direccion;
|
||||||
|
|
||||||
|
public Cliente(long id, String nombre, String direccion) {
|
||||||
|
this.id = id;
|
||||||
|
this.nombre = nombre;
|
||||||
|
this.direccion = direccion;
|
||||||
|
}
|
||||||
|
// Junto con getters/setters
|
||||||
|
public Cliente(String nombre,String direccion){
|
||||||
|
this(0,nombre,direccion);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNombre() {
|
||||||
|
return nombre;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNombre(String nombre) {
|
||||||
|
this.nombre = nombre;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDireccion() {
|
||||||
|
return direccion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDireccion(String direccion) {
|
||||||
|
this.direccion = direccion;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return nombre;
|
||||||
|
}
|
||||||
|
}
|
||||||
176
src/main/java/iesthiar/gestorClientesDAO/ClienteDaoMysql.java
Normal file
176
src/main/java/iesthiar/gestorClientesDAO/ClienteDaoMysql.java
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
package iesthiar.gestorClientesDAO;
|
||||||
|
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.sql.Statement;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import javax.sql.DataSource;
|
||||||
|
|
||||||
|
import org.apache.commons.dbcp2.BasicDataSource;
|
||||||
|
|
||||||
|
public class ClienteDaoMysql implements Dao<Cliente> {
|
||||||
|
|
||||||
|
// Un DataSource es un intermediario para obtener las conexiones con la base de
|
||||||
|
// datos
|
||||||
|
private DataSource dataSource;
|
||||||
|
private static ClienteDaoMysql clienteDaoMysql=null;
|
||||||
|
|
||||||
|
|
||||||
|
// El constructor es privado para que no se puedan crear objetos de esta clase.
|
||||||
|
// Así se implementa el patrón singleton
|
||||||
|
private ClienteDaoMysql() {
|
||||||
|
// Configurar el BasicDataSource con los datos de la base de datos
|
||||||
|
String servidor, baseDatos, usuario, clave;
|
||||||
|
Properties datos = new Properties();
|
||||||
|
try (InputStream inputStream = new FileInputStream("db_config.properties")) {
|
||||||
|
datos.load(inputStream);
|
||||||
|
servidor = datos.getProperty("db.servidor");
|
||||||
|
baseDatos = datos.getProperty("db.baseDatos");
|
||||||
|
usuario = datos.getProperty("db.usuario");
|
||||||
|
clave = datos.getProperty("db.clave");
|
||||||
|
|
||||||
|
} catch (IOException | NullPointerException e) {
|
||||||
|
// Establecemos unos valores por defecto
|
||||||
|
servidor = "172.18.185.243";
|
||||||
|
baseDatos = "tienda";
|
||||||
|
usuario = "root";
|
||||||
|
clave = "example";
|
||||||
|
// Crear fichero de properties
|
||||||
|
crearFicheroProperties();
|
||||||
|
System.out.println("El fichero de configuración no existe");
|
||||||
|
}
|
||||||
|
// Creamos la fuente de datos
|
||||||
|
BasicDataSource basicDataSource = new BasicDataSource();
|
||||||
|
basicDataSource.setUrl("jdbc:mysql://" + servidor + ":3306/" + baseDatos);
|
||||||
|
basicDataSource.setUsername(usuario);
|
||||||
|
basicDataSource.setPassword(clave);
|
||||||
|
this.dataSource = basicDataSource;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Implementación del patrón Singleton. Usamos un método para obtener objetos de la clase.
|
||||||
|
// Si no existe el objeto, lo creamos, y siempre devolvemos el mismo objeto. Sólo tenemos una instancia de este objeto
|
||||||
|
public static ClienteDaoMysql getClienteDaoMysql(){
|
||||||
|
if (clienteDaoMysql==null)
|
||||||
|
clienteDaoMysql=new ClienteDaoMysql();
|
||||||
|
return clienteDaoMysql;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void crearFicheroProperties() {
|
||||||
|
Properties datos = new Properties();
|
||||||
|
datos.setProperty("db.servidor", "localhost");
|
||||||
|
datos.setProperty("db.puerto", "3306");
|
||||||
|
datos.setProperty("db.baseDatos", "geografia");
|
||||||
|
datos.setProperty("db.usuario", "root");
|
||||||
|
datos.setProperty("db.clave", "");
|
||||||
|
try {
|
||||||
|
datos.store(new FileOutputStream("db_config.properties"), "Configuración inicial BD");
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("ERROR al escribir el fichero de properties");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<Cliente> obtener(long id) {
|
||||||
|
try (Connection conn = dataSource.getConnection();
|
||||||
|
PreparedStatement stmt = conn.prepareStatement("SELECT nombre, direccion FROM clientes WHERE id = ?")) {
|
||||||
|
|
||||||
|
stmt.setLong(1, id);
|
||||||
|
|
||||||
|
try (ResultSet rs = stmt.executeQuery()) {
|
||||||
|
if (rs.next()) {
|
||||||
|
String nombre = rs.getString("nombre");
|
||||||
|
String direccion = rs.getString("direccion");
|
||||||
|
|
||||||
|
Cliente cliente = new Cliente(id, nombre, direccion);
|
||||||
|
return Optional.of(cliente);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Cliente> obtenerTodos() {
|
||||||
|
List<Cliente> clientes = new ArrayList<>();
|
||||||
|
try (Connection conn = dataSource.getConnection();
|
||||||
|
Statement stmt = conn.createStatement();
|
||||||
|
ResultSet rs = stmt.executeQuery("SELECT id, nombre, direccion FROM clientes")) {
|
||||||
|
|
||||||
|
while (rs.next()) {
|
||||||
|
long id = rs.getLong("id");
|
||||||
|
String nombre = rs.getString("nombre");
|
||||||
|
String direccion = rs.getString("direccion");
|
||||||
|
|
||||||
|
Cliente cliente = new Cliente(id, nombre, direccion);
|
||||||
|
clientes.add(cliente);
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return clientes;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void guardar(Cliente cliente) {
|
||||||
|
try (Connection conn = dataSource.getConnection();
|
||||||
|
PreparedStatement pst = conn.prepareStatement("insert into clientes(nombre,direccion) values (?,?)")) {
|
||||||
|
|
||||||
|
pst.setString(1, cliente.getNombre());
|
||||||
|
pst.setString(2, cliente.getDireccion());
|
||||||
|
|
||||||
|
pst.executeUpdate();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actualizar(Cliente cliente) {
|
||||||
|
try (Connection conn = dataSource.getConnection();
|
||||||
|
PreparedStatement pst = conn.prepareStatement("update clientes set nombre=?, direccion=? where id=?")) {
|
||||||
|
|
||||||
|
pst.setString(1, cliente.getNombre());
|
||||||
|
pst.setString(2, cliente.getDireccion());
|
||||||
|
pst.setLong(3, cliente.getId());
|
||||||
|
|
||||||
|
pst.executeUpdate();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void borrar(Cliente cliente) {
|
||||||
|
try (Connection conn = dataSource.getConnection();
|
||||||
|
PreparedStatement pst = conn.prepareStatement("delete from clientes where id=?")) {
|
||||||
|
|
||||||
|
pst.setLong(1, cliente.getId());
|
||||||
|
|
||||||
|
pst.executeUpdate();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean activa() {
|
||||||
|
try (Connection conn = dataSource.getConnection()) {
|
||||||
|
return true;
|
||||||
|
} catch (SQLException e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
package iesthiar.gestorClientesDAO;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public class ClienteDaoSerilizable implements Dao<Cliente>{
|
||||||
|
|
||||||
|
private Map<Long,Cliente> clientes;
|
||||||
|
|
||||||
|
public ClienteDaoSerilizable(){
|
||||||
|
// Leer objetos del fichero serializado.
|
||||||
|
// Fichero se guarda en resources
|
||||||
|
// Donde dejo los objetos?
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<Cliente> obtener(long id) {
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Cliente> obtenerTodos() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void guardar(Cliente cliente) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actualizar(Cliente cliente) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void borrar(Cliente cliente) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean activa() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
throw new UnsupportedOperationException("Unimplemented method 'activa'");
|
||||||
|
}
|
||||||
|
}
|
||||||
13
src/main/java/iesthiar/gestorClientesDAO/Dao.java
Normal file
13
src/main/java/iesthiar/gestorClientesDAO/Dao.java
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
package iesthiar.gestorClientesDAO;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public interface Dao <T>{
|
||||||
|
Optional<T> obtener(long id);
|
||||||
|
List<T> obtenerTodos();
|
||||||
|
void guardar(T t);
|
||||||
|
void actualizar(T t);
|
||||||
|
void borrar(T t);
|
||||||
|
boolean activa();
|
||||||
|
}
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
package iesthiar.gestorClientesDAO;
|
||||||
|
|
||||||
|
import java.net.URL;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
|
import javafx.event.ActionEvent;
|
||||||
|
import javafx.fxml.FXML;
|
||||||
|
import javafx.fxml.Initializable;
|
||||||
|
import javafx.scene.control.Alert;
|
||||||
|
import javafx.scene.control.Alert.AlertType;
|
||||||
|
import javafx.scene.control.Button;
|
||||||
|
import javafx.scene.control.ButtonType;
|
||||||
|
import javafx.scene.control.ComboBox;
|
||||||
|
import javafx.scene.control.Label;
|
||||||
|
import javafx.scene.control.TextField;
|
||||||
|
|
||||||
|
public class gestorClientesControlador implements Initializable {
|
||||||
|
@FXML
|
||||||
|
private ComboBox<Cliente> clientesCBox;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private TextField idTF;
|
||||||
|
@FXML
|
||||||
|
private TextField nombreTF;
|
||||||
|
@FXML
|
||||||
|
private TextField direccionTF;
|
||||||
|
@FXML
|
||||||
|
private Label mensajes;
|
||||||
|
@FXML
|
||||||
|
private Button modificarButton;
|
||||||
|
@FXML
|
||||||
|
private Button borrarButton;
|
||||||
|
|
||||||
|
private Dao<Cliente> dao;
|
||||||
|
private Cliente clienteSeleccionado;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initialize(URL location, ResourceBundle resources) {
|
||||||
|
dao = ClienteDaoMysql.getClienteDaoMysql();
|
||||||
|
if (!dao.activa()) {
|
||||||
|
Alert alerta = new Alert(AlertType.ERROR);
|
||||||
|
alerta.setHeaderText("ERROR GRAVE");
|
||||||
|
alerta.setContentText("Se ha producido un error al abrir la base de datos");
|
||||||
|
alerta.showAndWait();
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
clientesCBox.getItems().setAll(dao.obtenerTodos());
|
||||||
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
public void accionCB(ActionEvent ae) {
|
||||||
|
clienteSeleccionado = (Cliente) ((ComboBox<Cliente>) ae.getSource()).getValue();
|
||||||
|
idTF.setText("" + clienteSeleccionado.id);
|
||||||
|
nombreTF.setText(clienteSeleccionado.nombre);
|
||||||
|
direccionTF.setText(clienteSeleccionado.direccion);
|
||||||
|
mensajes.setText("");
|
||||||
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
public void nuevoCliente(ActionEvent ae) {
|
||||||
|
Button fuente=(Button)ae.getSource();
|
||||||
|
if (fuente.getText().equals("Nuevo")){
|
||||||
|
// Preparamos para crear un nuevo cliente
|
||||||
|
fuente.setText("Crear");
|
||||||
|
modificarButton.setDisable(true);
|
||||||
|
borrarButton.setDisable(true);
|
||||||
|
clientesCBox.setDisable(true);
|
||||||
|
idTF.setText("");
|
||||||
|
direccionTF.setText("");
|
||||||
|
nombreTF.setText("");
|
||||||
|
idTF.setEditable(true);
|
||||||
|
idTF.requestFocus();
|
||||||
|
} else {
|
||||||
|
// Dar de alta realmente
|
||||||
|
if (idTF.getText().matches("^[0-9]+$") && !nombreTF.getText().equals("") && !direccionTF.getText().equals("")){
|
||||||
|
Cliente nuevoCliente=new Cliente(Long.parseLong(idTF.getText()),nombreTF.getText(), direccionTF.getText());
|
||||||
|
dao.guardar(nuevoCliente);
|
||||||
|
mensajes.setText("Cliente creado correctamente");
|
||||||
|
modificarButton.setDisable(false);
|
||||||
|
borrarButton.setDisable(false);
|
||||||
|
clientesCBox.setDisable(false);
|
||||||
|
fuente.setText("Nuevo");
|
||||||
|
direccionTF.setText("");
|
||||||
|
nombreTF.setText("");
|
||||||
|
idTF.setEditable(false);
|
||||||
|
clientesCBox.getItems().add(nuevoCliente);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
public void modificar() {
|
||||||
|
if (clienteSeleccionado != null) {
|
||||||
|
clienteSeleccionado.setDireccion(direccionTF.getText());
|
||||||
|
clienteSeleccionado.setNombre(nombreTF.getText());
|
||||||
|
dao.actualizar(clienteSeleccionado);
|
||||||
|
mensajes.setText("Cliente modificado correctamente");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
public void borrarCliente() {
|
||||||
|
if (clienteSeleccionado != null && confirmacion("¿Borrar el cliente seleccionado?")) {
|
||||||
|
dao.borrar(clienteSeleccionado);
|
||||||
|
clientesCBox.getItems().remove(clienteSeleccionado);
|
||||||
|
mensajes.setText("Cliente borrado correctamente");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean confirmacion(String mensaje) {
|
||||||
|
Alert alerta = new Alert(AlertType.CONFIRMATION);
|
||||||
|
alerta.setHeaderText("Se necesita confirmación");
|
||||||
|
alerta.setContentText(mensaje);
|
||||||
|
Optional<ButtonType> res = alerta.showAndWait();
|
||||||
|
if (res.get() == ButtonType.OK)
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,15 @@
|
|||||||
module iesthiar {
|
module iesthiar {
|
||||||
requires javafx.controls;
|
requires javafx.controls;
|
||||||
requires javafx.fxml;
|
requires javafx.fxml;
|
||||||
|
requires java.sql;
|
||||||
|
requires java.desktop;
|
||||||
|
requires javafx.graphics;
|
||||||
|
requires org.apache.commons.dbcp2;
|
||||||
|
|
||||||
opens iesthiar to javafx.fxml;
|
opens iesthiar to javafx.fxml;
|
||||||
exports iesthiar;
|
exports iesthiar;
|
||||||
|
|
||||||
|
opens iesthiar.gestorClientesDAO to javafx.fxml;
|
||||||
|
exports iesthiar.gestorClientesDAO;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,67 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<?import javafx.geometry.Insets?>
|
||||||
|
<?import javafx.scene.control.Button?>
|
||||||
|
<?import javafx.scene.control.ButtonBar?>
|
||||||
|
<?import javafx.scene.control.ComboBox?>
|
||||||
|
<?import javafx.scene.control.Label?>
|
||||||
|
<?import javafx.scene.control.TextField?>
|
||||||
|
<?import javafx.scene.layout.ColumnConstraints?>
|
||||||
|
<?import javafx.scene.layout.GridPane?>
|
||||||
|
<?import javafx.scene.layout.HBox?>
|
||||||
|
<?import javafx.scene.layout.RowConstraints?>
|
||||||
|
<?import javafx.scene.layout.VBox?>
|
||||||
|
|
||||||
|
<VBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefWidth="600.0" xmlns="http://javafx.com/javafx/22" xmlns:fx="http://javafx.com/fxml/1" fx:controller="iesthiar.gestorClientesDAO.gestorClientesControlador">
|
||||||
|
<children>
|
||||||
|
<HBox alignment="CENTER" prefHeight="100.0" prefWidth="200.0" spacing="10.0">
|
||||||
|
<children>
|
||||||
|
<Label text="Clientes" />
|
||||||
|
<ComboBox fx:id="clientesCBox" onAction="#accionCB" prefWidth="150.0" />
|
||||||
|
</children>
|
||||||
|
</HBox>
|
||||||
|
<GridPane hgap="10.0">
|
||||||
|
<columnConstraints>
|
||||||
|
<ColumnConstraints halignment="RIGHT" hgrow="SOMETIMES" maxWidth="293.0" minWidth="10.0" prefWidth="208.0" />
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" maxWidth="405.0" minWidth="10.0" prefWidth="405.0" />
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" maxWidth="392.0" minWidth="10.0" prefWidth="105.0" />
|
||||||
|
</columnConstraints>
|
||||||
|
<rowConstraints>
|
||||||
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
</rowConstraints>
|
||||||
|
<children>
|
||||||
|
<Label text="Id:" />
|
||||||
|
<Label text="Nombre:" GridPane.rowIndex="1" />
|
||||||
|
<Label text="Dirección:" GridPane.rowIndex="2" />
|
||||||
|
<TextField fx:id="idTF" editable="false" prefHeight="26.0" prefWidth="337.0" GridPane.columnIndex="1" />
|
||||||
|
<TextField fx:id="nombreTF" GridPane.columnIndex="1" GridPane.rowIndex="1" />
|
||||||
|
<TextField fx:id="direccionTF" GridPane.columnIndex="1" GridPane.rowIndex="2" />
|
||||||
|
</children>
|
||||||
|
</GridPane>
|
||||||
|
<HBox>
|
||||||
|
<children>
|
||||||
|
<ButtonBar nodeOrientation="LEFT_TO_RIGHT" prefHeight="40.0" prefWidth="200.0">
|
||||||
|
<buttons>
|
||||||
|
<Button mnemonicParsing="false" onAction="#nuevoCliente" text="Nuevo" />
|
||||||
|
</buttons>
|
||||||
|
</ButtonBar>
|
||||||
|
<ButtonBar prefHeight="40.0" prefWidth="200.0" HBox.hgrow="ALWAYS">
|
||||||
|
<buttons>
|
||||||
|
<Button fx:id="modificarButton" mnemonicParsing="false" onAction="#modificar" text="Modificar" />
|
||||||
|
<Button fx:id="borrarButton" mnemonicParsing="false" onAction="#borrarCliente" text="Borrar" />
|
||||||
|
</buttons>
|
||||||
|
<HBox.margin>
|
||||||
|
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
|
||||||
|
</HBox.margin>
|
||||||
|
</ButtonBar>
|
||||||
|
</children>
|
||||||
|
</HBox>
|
||||||
|
<HBox alignment="CENTER" prefHeight="100.0" prefWidth="200.0">
|
||||||
|
<children>
|
||||||
|
<Label fx:id="mensajes" text="Mensajes" />
|
||||||
|
</children>
|
||||||
|
</HBox>
|
||||||
|
</children>
|
||||||
|
</VBox>
|
||||||
74
src/main/resources/iesthiar/gestorClientesDAO/tienda.sql
Normal file
74
src/main/resources/iesthiar/gestorClientesDAO/tienda.sql
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
-- phpMyAdmin SQL Dump
|
||||||
|
-- version 5.0.2
|
||||||
|
-- https://www.phpmyadmin.net/
|
||||||
|
--
|
||||||
|
-- Servidor: localhost
|
||||||
|
-- Tiempo de generación: 30-04-2020 a las 10:39:43
|
||||||
|
-- Versión del servidor: 10.4.11-MariaDB
|
||||||
|
-- Versión de PHP: 7.4.4
|
||||||
|
|
||||||
|
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
|
||||||
|
START TRANSACTION;
|
||||||
|
SET time_zone = "+00:00";
|
||||||
|
|
||||||
|
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||||
|
/*!40101 SET NAMES utf8mb4 */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Base de datos: `tienda`
|
||||||
|
--
|
||||||
|
|
||||||
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Estructura de tabla para la tabla `clientes`
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE TABLE `clientes` (
|
||||||
|
`id` int(11) NOT NULL,
|
||||||
|
`nombre` varchar(50) NOT NULL,
|
||||||
|
`direccion` varchar(100) NOT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Volcado de datos para la tabla `clientes`
|
||||||
|
--
|
||||||
|
|
||||||
|
INSERT INTO `clientes` (`id`, `nombre`, `direccion`) VALUES
|
||||||
|
(1, 'Lionel', 'Valencia'),
|
||||||
|
(2, 'Sergi', 'Valencia'),
|
||||||
|
(3, 'Alfredo', 'Valencia'),
|
||||||
|
(4, 'Paco', 'Valencia'),
|
||||||
|
(5, 'Maria', 'Castellón'),
|
||||||
|
(6, 'Pepito', 'Alicante'),
|
||||||
|
(7, 'Luis', 'Elx'),
|
||||||
|
(8, 'Antonia', 'Xàtiva'),
|
||||||
|
(9, 'Carmen', 'Paterna');
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Índices para tablas volcadas
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Indices de la tabla `clientes`
|
||||||
|
--
|
||||||
|
ALTER TABLE `clientes`
|
||||||
|
ADD PRIMARY KEY (`id`);
|
||||||
|
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT de las tablas volcadas
|
||||||
|
--
|
||||||
|
|
||||||
|
--
|
||||||
|
-- AUTO_INCREMENT de la tabla `clientes`
|
||||||
|
--
|
||||||
|
ALTER TABLE `clientes`
|
||||||
|
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||||
22
src/main/resources/iesthiar/preparadas.fxml
Normal file
22
src/main/resources/iesthiar/preparadas.fxml
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<?import javafx.scene.control.Button?>
|
||||||
|
<?import javafx.scene.control.Label?>
|
||||||
|
<?import javafx.scene.control.TextArea?>
|
||||||
|
<?import javafx.scene.control.TextField?>
|
||||||
|
<?import javafx.scene.layout.HBox?>
|
||||||
|
<?import javafx.scene.layout.VBox?>
|
||||||
|
|
||||||
|
|
||||||
|
<VBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/22" xmlns:fx="http://javafx.com/fxml/1" fx:controller="iesthiar.PreparadasController">
|
||||||
|
<children>
|
||||||
|
<HBox alignment="CENTER" prefHeight="100.0" prefWidth="200.0" spacing="10.0">
|
||||||
|
<children>
|
||||||
|
<Label text="Nombre a buscar:" />
|
||||||
|
<TextField fx:id="nombre" />
|
||||||
|
<Button mnemonicParsing="false" onAction="#conectar" text="Buscar" />
|
||||||
|
</children>
|
||||||
|
</HBox>
|
||||||
|
<TextArea fx:id="salida" editable="false" prefHeight="200.0" prefWidth="400.0" style="-fx-control-inner-background:#000000; -fx-font-family: Consolas; -fx-highlight-fill: #00ff00; -fx-highlight-text-fill: #000000; -fx-text-fill: #00ff00; " />
|
||||||
|
</children>
|
||||||
|
</VBox>
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
|
|
||||||
<?import javafx.scene.layout.VBox?>
|
|
||||||
<?import javafx.scene.control.Label?>
|
|
||||||
<?import javafx.scene.control.Button?>
|
|
||||||
<?import javafx.geometry.Insets?>
|
|
||||||
|
|
||||||
<VBox alignment="CENTER" spacing="20.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="iesthiar.PrimaryController">
|
|
||||||
<children>
|
|
||||||
<Label text="Primary View" />
|
|
||||||
<Button fx:id="primaryButton" text="Switch to Secondary View" onAction="#switchToSecondary"/>
|
|
||||||
</children>
|
|
||||||
<padding>
|
|
||||||
<Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
|
|
||||||
</padding>
|
|
||||||
</VBox>
|
|
||||||
82
src/main/resources/iesthiar/pruebaConexion.fxml
Normal file
82
src/main/resources/iesthiar/pruebaConexion.fxml
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<?import javafx.geometry.Insets?>
|
||||||
|
<?import javafx.scene.control.Button?>
|
||||||
|
<?import javafx.scene.control.Label?>
|
||||||
|
<?import javafx.scene.control.Tab?>
|
||||||
|
<?import javafx.scene.control.TabPane?>
|
||||||
|
<?import javafx.scene.control.TextArea?>
|
||||||
|
<?import javafx.scene.control.TextField?>
|
||||||
|
<?import javafx.scene.layout.HBox?>
|
||||||
|
<?import javafx.scene.layout.VBox?>
|
||||||
|
|
||||||
|
<TabPane xmlns="http://javafx.com/javafx/21.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="iesthiar.PruebaConexionController">
|
||||||
|
<tabs>
|
||||||
|
<Tab text="PruebaConexion">
|
||||||
|
<content>
|
||||||
|
<VBox alignment="CENTER" spacing="20.0">
|
||||||
|
<children>
|
||||||
|
<Label text="Prueba de conexion" />
|
||||||
|
<TextArea fx:id="salida" editable="false" prefHeight="200.0" prefWidth="400.0" style="-fx-control-inner-background:#000000; -fx-font-family: Consolas; -fx-highlight-fill: #00ff00; -fx-highlight-text-fill: #000000; -fx-text-fill: #00ff00; " />
|
||||||
|
<Button onAction="#conectar" text="Conectar" />
|
||||||
|
</children>
|
||||||
|
<padding>
|
||||||
|
<Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
|
||||||
|
</padding>
|
||||||
|
</VBox>
|
||||||
|
</content>
|
||||||
|
</Tab>
|
||||||
|
<Tab text="ObtenerResultados">
|
||||||
|
<content>
|
||||||
|
<VBox alignment="CENTER" spacing="20.0">
|
||||||
|
<children>
|
||||||
|
<HBox>
|
||||||
|
<children>
|
||||||
|
<Label prefWidth="80.0" text="Servidor" />
|
||||||
|
<TextField fx:id="servidor" promptText="localhost" />
|
||||||
|
<Label text="Puerto" />
|
||||||
|
<TextField fx:id="puerto" prefWidth="60.0" promptText="3306" />
|
||||||
|
</children>
|
||||||
|
</HBox>
|
||||||
|
<HBox>
|
||||||
|
<children>
|
||||||
|
<Label prefWidth="100.0" text="Base de Datos" />
|
||||||
|
<TextField fx:id="baseDatos" />
|
||||||
|
</children>
|
||||||
|
</HBox>
|
||||||
|
<HBox>
|
||||||
|
<children>
|
||||||
|
<Label prefWidth="80.0" text="Usuario" />
|
||||||
|
<TextField fx:id="usuario" />
|
||||||
|
</children>
|
||||||
|
</HBox>
|
||||||
|
<TextArea fx:id="salidaRes" editable="false" prefHeight="200.0" prefWidth="400.0" style="-fx-control-inner-background:#000000; -fx-font-family: Consolas; -fx-highlight-fill: #00ff00; -fx-highlight-text-fill: #000000; -fx-text-fill: #00ff00; " />
|
||||||
|
<Button onAction="#conectarRes" text="Conectar" />
|
||||||
|
</children>
|
||||||
|
<padding>
|
||||||
|
<Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
|
||||||
|
</padding>
|
||||||
|
</VBox>
|
||||||
|
</content>
|
||||||
|
</Tab>
|
||||||
|
<Tab text="ResultadosParciales">
|
||||||
|
<content>
|
||||||
|
<VBox alignment="CENTER" spacing="20.0">
|
||||||
|
<children>
|
||||||
|
<HBox spacing="10.0">
|
||||||
|
<children>
|
||||||
|
<Label text="Nombre a buscar" />
|
||||||
|
<TextField fx:id="nombre" />
|
||||||
|
</children>
|
||||||
|
</HBox>
|
||||||
|
<TextArea fx:id="salidaRes3" editable="false" prefHeight="200.0" prefWidth="400.0" style="-fx-control-inner-background:#000000; -fx-font-family: Consolas; -fx-highlight-fill: #00ff00; -fx-highlight-text-fill: #000000; -fx-text-fill: #00ff00; " />
|
||||||
|
<Button onAction="#conectarRes3" text="Conectar" />
|
||||||
|
</children>
|
||||||
|
<padding>
|
||||||
|
<Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
|
||||||
|
</padding>
|
||||||
|
</VBox>
|
||||||
|
</content>
|
||||||
|
</Tab>
|
||||||
|
</tabs>
|
||||||
|
</TabPane>
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
|
|
||||||
<?import javafx.scene.layout.VBox?>
|
|
||||||
<?import javafx.scene.control.Label?>
|
|
||||||
<?import javafx.scene.control.Button?>
|
|
||||||
<?import javafx.geometry.Insets?>
|
|
||||||
|
|
||||||
<VBox alignment="CENTER" spacing="20.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="iesthiar.SecondaryController">
|
|
||||||
<children>
|
|
||||||
<Label text="Secondary View" />
|
|
||||||
<Button fx:id="secondaryButton" text="Switch to Primary View" onAction="#switchToPrimary" />
|
|
||||||
</children>
|
|
||||||
<padding>
|
|
||||||
<Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
|
|
||||||
</padding>
|
|
||||||
</VBox>
|
|
||||||
Reference in New Issue
Block a user