Bom dia pessoal, estou com o seguinte problema:
estou tentando criar um programa básico de cadastro de clientes com interface gráfica feita no netbeans, primeiramente fiz e não usei banco de dados nenhum e deu certo, então resolvi implementar o banco de dados HSQLDB em modo Standalone para esta aplicação simples.
Eu consegui conectar o programa ao banco de dados, mas quando tento cadastrar o usuário, ele apresenta o seguinte erro:
Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at comercialsimples.TelaCadastroCliente.GravarActionPerformed(TelaCadastroCliente.java:345)
at comercialsimples.TelaCadastroCliente.access$300(TelaCadastroCliente.java:17)
at comercialsimples.TelaCadastroCliente$4.actionPerformed(TelaCadastroCliente.java:288)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:688)
at java.awt.EventQueue$3.run(EventQueue.java:686)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:702)
at java.awt.EventQueue$4.run(EventQueue.java:700)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
a seguir, o código de cadastro do usuário:
package comercialsimples;
import Classes.Cliente;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Conexão {
Statement stmt = null;
ResultSet result;
Connection c;
String aux;
public void inserir(Cliente client){
try {
c = DriverManager.getConnection("jdbc:hsqldb:file:testdb", "sa", "");
stmt = c.createStatement();
aux = client.getNome();
stmt.execute("INSERT INTO USUARIOS (nome) VALUES ('" + aux + "')");
// stmt.execute("CREATE TABLE Usuarios (nome VARCHAR(100) NOT NULL);");
stmt.executeUpdate("shutdown");
c.commit();
stmt.close();
c.close();
} catch (SQLException ex) {
Logger.getLogger(ComercialSimples.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
[EDIT]
Galera, fiz um método de pesquisa só pra testar e deu o mesmo erro em conexão, então o problema se encontra em conexão, a seguir código atualizado:
package comercialsimples;
import Classes.Cliente;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Conexão {
Statement stmt;
ResultSet result;
Connection c;
String aux;
private ResultSet res;
public void inserir(Cliente client){
try {
c = DriverManager.getConnection("jdbc:hsqldb:file:testdb", "sa", "");
stmt = c.createStatement();
aux = client.getNome();
stmt.execute("INSERT INTO USUARIOS (nome) VALUES ('" + aux + "')");
// stmt.execute("CREATE TABLE Usuarios (nome VARCHAR(100) NOT NULL);");
stmt.executeUpdate("shutdown");
c.commit();
stmt.close();
c.close();
} catch (SQLException ex) {
Logger.getLogger(ComercialSimples.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void pesquisar() throws SQLException{
c = DriverManager.getConnection("jdbc:hsqldb:file:testdb", "sa", "");
stmt = c.createStatement();
stmt.executeQuery("SELECT * FROM USUARIOS");
res = stmt.getResultSet();
while(res.next()){
System.out.println(res.getString("firstname"));
}
stmt.executeUpdate("shutdown");
c.commit();
stmt.close();
c.close();
}
}
