El siguiente ejercicio nos manda Jéssica Castillo. Nos pide diseñar un programa en java que permita cargar la información de una tabla de base de datos en un JTable y que para ello debemos usar vectores, Asimismo, nos pide implementar las opciones para insertar y eliminar.
MYSQL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; DROP SCHEMA IF EXISTS `parcial` ; CREATE SCHEMA IF NOT EXISTS `parcial` DEFAULT CHARACTER SET latin1 COLLATE latin1_spanish_ci ; USE `parcial` ; -- ----------------------------------------------------- -- Table `parcial`.`agenda` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `parcial`.`agenda` ( `id` CHAR(5) NOT NULL , `nombre` VARCHAR(45) NULL , `direccion` VARCHAR(45) NULL , `telefono` VARCHAR(45) NULL , PRIMARY KEY (`id`) ) ENGINE = InnoDB; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; |
JAVA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 | import java.awt.Container; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Vector; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.table.DefaultTableModel; public class Agenda extends JFrame implements ActionListener { // Atributos para la creación de la GUI private JButton btnAgregar, btnEliminar, btnSalir; private JTextField txtId, txtNombre, txtDireccion, txtTelefono; private DefaultTableModel modelo; // Atributo para la conexión a la base de datos private Connection con; // Constructor de la clase public Agenda() { // Al llamar al constructor de la clase creamos la GUI y/o cargamos la // información // --->INICIA LA CREACIÓN DE LA GUI /* Ventana principal */ super("Agenda de Personas"); // Título setSize(330, 450); // Tamaño /* Panel de datos */ JPanel pnlDatos = new JPanel(); // Crea el panel Dimension dimension = new Dimension(300, 150); // Configura una dimensión pnlDatos.setPreferredSize(dimension); // Establece el tamaño pnlDatos.setLayout(new GridLayout(6, 2, 1, 1)); // Establece el diseño del panel // Campo id JLabel lblId = new JLabel("Id"); pnlDatos.add(lblId); txtId = new JTextField(10); pnlDatos.add(txtId); // Campo nombre JLabel lblNombre = new JLabel("Nombre"); pnlDatos.add(lblNombre); txtNombre = new JTextField(10); pnlDatos.add(txtNombre); // Campo dirección JLabel lblDireccion = new JLabel("Dirección"); pnlDatos.add(lblDireccion); txtDireccion = new JTextField(10); pnlDatos.add(txtDireccion); // Campo teléfono JLabel lblTelefono = new JLabel("Teléfono"); pnlDatos.add(lblTelefono); txtTelefono = new JTextField(10); pnlDatos.add(txtTelefono); // Botones btnAgregar = new JButton("AGREGAR"); btnAgregar.addActionListener(this); pnlDatos.add(btnAgregar); btnEliminar = new JButton("ELIMINAR"); btnEliminar.addActionListener(this); pnlDatos.add(btnEliminar); btnSalir = new JButton("SALIR"); btnSalir.addActionListener(this); pnlDatos.add(btnSalir); /* Panel de resultado */ JPanel pnlTabla = new JPanel(); pnlTabla.setPreferredSize(new Dimension(320, 250)); // Modelo modelo = new DefaultTableModel(); modelo.addColumn("Id"); modelo.addColumn("Nombre"); modelo.addColumn("Dirección"); modelo.addColumn("Teléfono"); // Tabla JTable tabla = new JTable(); tabla.setModel(modelo); tabla.setPreferredScrollableViewportSize(new Dimension(300, 180)); // Panel de desplazamiento JScrollPane scpScroll = new JScrollPane(tabla); pnlTabla.add(scpScroll); /* Agregamos los paneles a un contenedor principal */ Container c = getContentPane(); c.setLayout(new FlowLayout()); // Le damos un diseño al contenedor // de alineación centrada y un espacio horizontal // y vertical predeterminado de 5 unidades c.add(pnlDatos); c.add(pnlTabla); // <---TERMINA LA CREACIÓN DE LA GUI /* Nos conectamos a la base de datos */ this.generaConexion(); /* Llenamos la tabla con información */ this.cargaInformacionTabla(); //show(); } // Función para establecer la conexión a la base de datos public void generaConexion() { // Propiedades de conexión a la base de datos String url = "jdbc:mysql://localhost/parcial?serverTimezone=UTC&useSSL=false"; // Url de la bd String driver = "com.mysql.cj.jdbc.Driver"; // Conector ODBC MySQL String name = "root";// Usuario del servidor String password = "root"; // Contraseña del servidor try { // Carga el driver del conexión MySQL Class.forName(driver); try { // Establece la conexión a la base de datos con = DriverManager.getConnection(url, name, password); System.out.println("Conexión exitosa"); } catch (Exception e) { // Si hubiera un error al conectarse System.out.println("Error al conectarse a la base de datos"); e.printStackTrace(); } } catch (Exception e) { // Si no se pudo cargar el driver System.out.println("Error al cargar el controldor MySQL"); e.printStackTrace(); } } // Función para cargar los datos de la base de datos al JTable public void cargaInformacionTabla() { int cantFilas = modelo.getRowCount(); // Retorna el número de filas en el modelo for (int i = 0; i < cantFilas; i++) { modelo.removeRow(0); // Elimina la fila del índice especificado } Statement stmt; ResultSet rs; try { // Creamos un objeto statement para enviar sentencias sql a la base de datos stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); // Ejecutamos la instrucción SQL dada, que devuelve un único objeto ResultSet rs = stmt.executeQuery("SELECT * FROM agenda"); // Mueve el cursor a la última fila de este objeto ResultSet rs.last(); // Recupera el número de fila actual. Empieza po 1 int nrow = rs.getRow(); if (nrow > 0) { // Si el número de fila actual es mayor a 0 rs.beforeFirst(); // Mueve el cursor al frente de este objeto ResultSet, // justo antes de la primera fila. while (rs.next()) { // Mientras la llamada al método next() devuelva verdadero // Extraemos los valores de las columnas de la fila actual y lo agregamos a un // vector temporal Vector<String> temporal = new Vector<>(); temporal.add(rs.getString(1)); // Le podemos pasar el número o el nombre de la columna temporal.add(rs.getString(2)); temporal.add(rs.getString(3)); temporal.add(rs.getString(4)); modelo.addRow(temporal); // Agregamos el vetor al modelo } } // Liberar los recursos rs.close(); stmt.close(); } catch (SQLException e) { System.out.println("Erro al ejecutar la consulta"); e.printStackTrace(); } } // Función para insertar un elemento a la base de datos public void insertar() { Statement stmt; try { String id1 = txtId.getText(); String nom1 = txtNombre.getText(); String dir1 = txtDireccion.getText(); String tel1 = txtTelefono.getText(); String query = "INSERT INTO agenda(id, nombre, direccion, telefono) " + "values ('" + id1 + "','" + nom1 + "','" + dir1 + "','" + tel1 + "')"; System.out.println(query); stmt = con.createStatement(); stmt.executeUpdate(query); stmt.close(); } catch (SQLException sqlex) { sqlex.printStackTrace(); } } // Función para eliminar un elemento de la base de datos public void eliminar() { Statement stmt; try { String id = txtId.getText(); String query = "DELETE FROM agenda WHERE id='" + id + "'"; System.out.println(query); stmt = con.createStatement(); stmt.executeUpdate(query); stmt.close(); } catch (SQLException sqlex) { sqlex.printStackTrace(); } } // Método del ActionListener public void actionPerformed(ActionEvent e) { if (e.getSource() == btnAgregar) { this.insertar(); this.cargaInformacionTabla(); } if (e.getSource() == btnEliminar) { this.eliminar(); this.cargaInformacionTabla(); } if (e.getSource() == btnSalir) { try { if (con != null) con.close(); } catch (SQLException sqlex) { System.err.println("Incapaz de desconectar"); sqlex.printStackTrace(); } System.exit(0); } } // Método principal que laza la aplicación public static void main(String args[]) { new Agenda().setVisible(true); } } |
PROGRAMA
DESARROLLO TUS ALGORITMOS 🔥🔥
✅ 1. Envía tu algoritmo.
✅ 2. Indica en qué lenguaje de Programación lo deseas.
✅ 3. Para qué fecha lo quieres.
✅ 4. De que país eres (para tu forma de pago)
✅ 5. También se desarrollan al momento.
✅ 6. Los 3 primeros ejercicios son gratis.
🔸 Explico cada ejercicio que desarrollo en el código.
Cuenta Dcoder para más ejercicios de programación
Blog para novedades de programación
Tienda online para más recursos de programación
No hay comentarios, ¡cuéntame algo!
Me gustaría saber tu opinión. ¡Saludos!