Tengo un pequeño formulario y una base de datos creada pero cuando quiero insertar en la base de datos me muestra el siguiente mensaje de Exception:
Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
at Class.Conexion.ejecutarSQL(Conexion.java:63)
at Forms.Formppal.jButton1ActionPerformed(Formppal.java:151)
at Forms.Formppal.access$100(Formppal.java:21)
at Forms.Formppal$2.actionPerformed(Formppal.java:74)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
"Conexion.java:63" hace referencia a la línea "Statement sentencia = conexion.createStatement();" del siguiente código:
public boolean ejecutarSQL(String sql)
{
try {
Statement sentencia = conexion.createStatement();
sentencia.executeUpdate(sql);
} catch (SQLException ex) {
ex.printStackTrace();
return false;
}
return true;
}
Y el código que se ejecuta antes de darse esta excepción, y que está dentro de un botón "Insertar" es el siguiente:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String codigo = jTextField1.getText();
String nombre = jTextField2.getText();
String apellido = jTextField3.getText();
String edad = jTextField4.getText();
String sql = "insert into datos (codigo, nombre, apellido, edad) " +
"values ("+codigo+", '"+nombre+"', '"+apellido+"', "+edad+");";
conexion.ejecutarSQL(sql);
}
Y, si tiene que ver, el código para crear la conexión es el siguiente:
public boolean crearConexion()
{
try {
Class.forName("com.mysql.jdbc.Driver");
conexion = DriverManager.getConnection("jdbc:mysql://localhost:3306/pruebadb","root","admin");
} catch (SQLException ex) {
ex.printStackTrace();
return false;
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
return false;
}
return true;
}
¿Será que me ayudan por favor a entender porque me arroja esa excepción y no me ejecuta la instrucción SQL? ¡Gracias!