Usar PreparedStatement
La parte de ingresar los valores en una consulta puede resultar un poco tediosa para implementar con tantas concatenaciones, existe una forma más fácil que es usando los PreparedStatements que ayudan a preparar una consulta para agregarle más información después y que la consulta pueda ser más legible.
try (
PreparedStatement stmt = conn.prepareStatement(
"INSERT INTO productos("nombre, descripcion, cantidad) VALUES (?, ?, ?)",
Statement.RETURN_GENERATED_KEYS
)
) {
stmt.setString(1, producto.getNombre());
stmt.setString(2, producto.getDescripcion());
stmt.setInt(3, producto.getCantidad());
stmt.executeUpdate();
}
En este ejemplo lo que se está haciendo es colocar la sintaxis de una consulta completa reemplazando los valores que van a cambiar con un signo de interrogación.
Luego de eso se agregan los valores con el método setter, indicando primero la posición (aquí empieza en 1) y luego el valor.
La posición es el lugar del signo de interrogación al que se le quiere asignar el valor, con un poco de práctica se volverá más fácil de hacer.
PD: El Statement o PreparedStatement están en un try con recursos para autocerrarlos.