Java - java.lang.NumberFormatException: For input string: ""

 
Vista:
sin imagen de perfil
Val: 27
Ha aumentado su posición en 37 puestos en Java (en relación al último mes)
Gráfica de Java

java.lang.NumberFormatException: For input string: ""

Publicado por pepe (15 intervenciones) el 18/02/2022 00:10:21
Buenas noches tengo un programa de CRUD conectado a mi base de datos pero al momento de modificarla y otras funciones del CRUD me aparece siempre este error en los demas todo me va bien como buscar limpiar etc menos este de modificar y eliminar ayuda :c
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
lse if (ae.getSource() == BtnModificar) {
            Connection con = null;
            try {
                con = getConnection();
                ps = con.prepareStatement("UPDATE persona SET Clave=?,Nombre=?,Domicilio=?,Telefono=?,PlanContratado=?,Fecha=? ComisionTotal=? ComisionPendiente=? WHERE idPersona=? ");
 
                ps.setString(1, TxtClave.getText());
                ps.setString(2, TxtNombre.getText());
                ps.setString(3, TxtDomicilio.getText());
                ps.setString(4, TxtTelefono.getText());
                ps.setString(5, TxtPlanContratado.getText());
                ps.setString(6, TxtFecha.getText());
                ps.setInt(7, Integer.parseInt(TxtComisionTotal.getText()));
                ps.setInt(8, Integer.parseInt(TxtComisionPendiente.getText() ));
                ps.setInt(9, Integer.parseInt(TxtID.getText()));
                int resultado = ps.executeUpdate();
                if (resultado > 0) {
                    JOptionPane.showMessageDialog(null, "Regsitro Modificado Correctamente");
                    LimpiarTxt();
                } else {
                    JOptionPane.showMessageDialog(null, "Error al Modificar");
                    LimpiarTxt();
                }
                con.close();
            } catch (Exception x) {
                System.err.println("Error asd: " + x);
            }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

java.lang.NumberFormatException: For input string: ""

Publicado por Billy Joel (876 intervenciones) el 18/02/2022 16:23:54
Estoy seguro que las líneas que te están dando problemas son esas donde intentas transformar String a int.
Una solución es implementar el operador ternario.

Sería algo como [Condición] ? [Si es cierto] : [Si es falso]

1
2
3
ps.setInt(7, TxtComisionTotal.getText().isEmpty() ? 0 : Integer.parseInt(TxtComisionTotal.getText()));
ps.setInt(8, TxtComisionPendiente.getText().isEmpty() ? 0 : Integer.parseInt(TxtComisionPendiente.getText()));
ps.setInt(9, TxtID.getText().isEmpty() ? 0 : Integer.parseInt(TxtID.getText()));

Como puedes ver la condición o interrogante es si el campo de texto está vacio. Si está vacío entonces coloca un 0, de otro modo transforma a número.

Se que no es la solución definitiva ya que si estos campos tienen texto en lugar de números entonces también va a saltar la excepción. En ese caso la solución sería abordar el problema desde más arriba.

Saludos,
Billy Joel.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 27
Ha aumentado su posición en 37 puestos en Java (en relación al último mes)
Gráfica de Java

java.lang.NumberFormatException: For input string: ""

Publicado por pepe (15 intervenciones) el 18/02/2022 21:21:47
Buenas tardes pues de hecho no creo porque esos campos son especificamente de terminos numericos pero ya lo aplique lo que dijiste y me salio esto
Error: 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 'ComisionTotal=1300 ComisionPendiente=300 WHERE idPersona=0' at line 1
igual dime y te pongo el codigo completo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

java.lang.NumberFormatException: For input string: ""

Publicado por Billy Joel (876 intervenciones) el 18/02/2022 22:27:45
Ya lo vi, es un error de sql. Te hizo falta las comas después de Fecha, ComisionTotal, ComisionPendiente.

Debería quedar así:

UPDATE persona SET Clave=?,Nombre=?,Domicilio=?,Telefono=?,PlanContratado=?,Fecha=?, ComisionTotal=?, ComisionPendiente=? WHERE idPersona=?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 27
Ha aumentado su posición en 37 puestos en Java (en relación al último mes)
Gráfica de Java

java.lang.NumberFormatException: For input string: ""

Publicado por pepe (15 intervenciones) el 18/02/2022 23:23:53
Siiii ya no me aparece eso ya no va directo al catch ahora aparece error al modificar en el codigo 20 que entra un if else

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
else if (ae.getSource() == BtnModificar ){
            Connection con = null;
            try {
                con = getConnection();
                ps = con.prepareStatement(" UPDATE persona SET Clave=?,Nombre=?,Domicilio=?,Telefono=?,PlanContratado=?,Fecha=?, ComisionTotal=?, ComisionPendiente=? WHERE idPersona=? ");
                ps.setString(1, TxtClave.getText());
                ps.setString(2, TxtNombre.getText());
                ps.setString(3, TxtDomicilio.getText());
                ps.setString(4, TxtTelefono.getText());
                ps.setString(5, TxtPlanContratado.getText());
                ps.setString(6, TxtFecha.getText());
                ps.setString(7, TxtComisionTotal.getText());
                ps.setString(8, TxtComisionPendiente.getText());
                ps.setInt(9, TxtID.getText().isEmpty() ? 0 : Integer.parseInt(TxtID.getText()));
                int resultado = ps.executeUpdate();
                if (resultado > 0) {
                    JOptionPane.showMessageDialog(null, "Regsitro Modificado Correctamente");
                    LimpiarTxt();
                } else {
                    JOptionPane.showMessageDialog(null, "Error al Modificar");
                    LimpiarTxt();
                }
                con.close();
            } catch (Exception x) {
                System.err.println("Error: " + x);
            }
 
                    }
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 27
Ha aumentado su posición en 37 puestos en Java (en relación al último mes)
Gráfica de Java

java.lang.NumberFormatException: For input string: ""

Publicado por pepe (15 intervenciones) el 18/02/2022 23:35:37
Oye sabes que note me marca diferentes errores por ejemplo
1
ps.setInt(9, TxtID.getText().isEmpty() ? 0 : Integer.parseInt(TxtID.getText()));
cuando cambie solo esta linea de ID a como me dijiste me sale nomas error al modificar
pero cuando lo pongo asi
1
ps.setInt(9, Integer.parseInt(TxtID.getText()));
me sale el error del principio
java.lang.NumberFormatException: For input string: ""
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar