// Model.java - Line 106if (trimmedQuery.startsWith("select")) { try (ResultSet rs = stmt.executeQuery(query)) { ResultSetMetaData meta = rs.getMetaData(); int columnas = meta.getColumnCount(); // Populate table model with results }}
SELECT Query Examples
-- Basic SELECTSELECT * FROM employees;-- SELECT with WHERE clauseSELECT name, salary FROM employees WHERE department = 'IT';-- SELECT with JOINSELECT e.name, d.department_nameFROM employees e JOIN departments d ON e.dept_id = d.id;-- SELECT with aggregationSELECT department, COUNT(*) as employee_count FROM employees GROUP BY department;-- SELECT with ORDER BY and LIMITSELECT * FROM products ORDER BY price DESCLIMIT 10;
The application extracts the table name from INSERT statements:
// Model.java - Line 169else if (query.startsWith("insert into")) { String[] partes = query.split("\\s+"); if (partes.length >= 3) { return partes[2].replaceAll("`", ""); }}
UPDATE Statement
-- Update single columnUPDATE employees SET salary = 75000WHERE id = 42;-- Update multiple columnsUPDATE products SET price = price * 1.10, updated_at = NOW() WHERE category = 'Electronics';
Table name extraction for UPDATE:
// Model.java - Line 174else if (query.startsWith("update")) { String[] partes = query.split("\\s+"); if (partes.length >= 2) { return partes[1].replaceAll("`", ""); }}
DELETE Statement
-- Delete with WHERE clauseDELETE FROM orders WHERE status = 'cancelled';-- Delete with JOINDELETE o FROM orders oJOIN customers c ON o.customer_id = c.idWHERE c.inactive = 1;
Table name extraction for DELETE:
// Model.java - Line 179else if (query.startsWith("delete from")) { String[] partes = query.split("\\s+"); if (partes.length >= 3) { return partes[2].replaceAll("`", ""); }}
DDL Statements
-- Create tableCREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);-- Alter tableALTER TABLE users ADD COLUMN last_login TIMESTAMP;-- Drop tableDROP TABLE temporary_data;-- Truncate tableTRUNCATE TABLE log_entries;
Table name extraction for CREATE TABLE:
// Model.java - Line 164if (query.startsWith("create table")) { String[] partes = query.split("\\s+"); if (partes.length >= 3) { return partes[2].replaceAll("`", ""); }}
The table browser list (listaTablas) provides a quick way to generate SELECT queries:
// SqlEditorView.java - Line 146listaTablas.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { if (evt.getClickCount() == 2) { String tablaSeleccionada = listaTablas.getSelectedValue(); if (tablaSeleccionada != null) { String consulta = "SELECT * FROM " + tablaSeleccionada + " LIMIT 100"; txtConsulta.setText(consulta); } } }});
Quick Tip: Double-click any table name in the “Tablas disponibles” list to automatically generate a SELECT * FROM table_name LIMIT 100 query in the editor.
If a query fails, detailed error messages are displayed:
// Controller.java - Line 256JOptionPane.showMessageDialog(editorView, "Error en la consulta: " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);