Solucionado (ver solución)
Solucionado
(ver solución)
3
respuestas

Solicitando su apoyo error Exception in thread "AWT-EventQueue-0"

Hola, segui los pasos como los menciona el instructor sin embargo al corregir el paréntesis de VALUE (en productocontroller), me despliega el siguiente error al tratar de ingresar los datos del vaso y por ende no me captura nada el error completo es el siguiente:

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '('Vaso', 'Vaso de cristal', 10)' at line 1

Ya revise y revise el código tanto de producto controller, control de stock frame y control de stock main y en teoría todo esta de acuerdo a los pasos del instructor, mucho agradecere su apoyo incluyo codigo

Main

package com.alura.jdbc;

import javax.swing.JFrame;

import com.alura.jdbc.view.ControlDeStockFrame;

public class ControlDeStockMain {

    public static void main(String[] args) {
        ControlDeStockFrame productoCategoriaFrame = new ControlDeStockFrame();
        productoCategoriaFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

}

Control Stock Frame

 // TODO
        var producto = new HashMap<String, String>();
        producto.put("NOMBRE", textoNombre.getText());
        producto.put("DESCRIPCION", textoDescripcion.getText());
        producto.put("CANTIDAD", String.valueOf(cantidadInt));
        var categoria = comboCategoria.getSelectedItem();

        try {
            this.productoController.guardar(producto);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

        JOptionPane.showMessageDialog(this, "Registrado con éxito!");

Producto Controller

 public void guardar(Map<String, String> producto) throws SQLException {
        Connection con = new ConnectionFactory().recuperaConexion();

        Statement statement =  con.createStatement();

        statement.execute("INSERT INTO PRODUCTO (nombre, descripcion, cantidad"
        + "VALUES('" + producto.get("NOMBRE") + "', '" 
                + producto.get("DESCRIPCION") + "', "
                + producto.get("CANTIDAD") + ")", Statement.RETURN_GENERATED_KEYS);

        ResultSet resultSet = statement.getGeneratedKeys();

        while (resultSet.next()) {
            System.out.println(
                    String.format("Fue insertado el producto con el ID %d" , 
            resultSet.getInt(1)));
        }

    }
3 respuestas
solución!

¡Hola Ricardo!

El error que estás experimentando se debe a una sintaxis incorrecta en tu sentencia SQL. La excepción indica que hay un error en la sintaxis de SQL que corresponde a la versión de tu servidor MySQL.

Revisa la sentencia SQL que estás utilizando en tu controlador de producto y verifica que esté escrita correctamente. En particular, verifica que el paréntesis de apertura y cierre estén en el lugar correcto.

Te sugiero que utilices una herramienta de depuración para identificar el problema en tu código. Por ejemplo, puedes utilizar un depurador de Java como Eclipse o NetBeans para ejecutar tu código paso a paso y ver en qué punto se produce el error.

Espero que esto te ayude a resolver el problema. ¡Buena suerte!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios

Hola Luis gracias por tu apoyo, pero sigo con el problema, ya revise la sentencia y esta de acuerdo a como la especifico el instructor, en teoria la version del servidor es mas actualizada Server Product: MySQL Community Server - GPL Version: 8.0.32 Connector Version: C++ 8.0.32 que la que comentan en el curso, estuve ya dos días buscando y buscando , el error lo marca cuando doy guardar, me desplace a la codificación y al parecer esta de acuerdo a lo mencionado (ya me duele la cabeza por que siento perdido el tiempo):(

Utilice el EverSQL SQL Query Syntax Check & Validator y me marca el error en

esta linea:

public void guardar(Map<String, String> producto) throws SQLException {

pero esta tal cual le escribió el instructor........sigo buscando