Erro ao salvar no banco de dados mysql (alguem pode me ajudar)

12 respostas
N

private void botaoSalvarActionPerformed(java.awt.event.ActionEvent evt) {

String Sql = "com.mysql.jdbc.Driver";
       
             String url = "jdbc:mysql://localhost:3306/cpjudi";

                obj.setadvogado(nomeadvogado.getText());
                obj.setescritorio(escritorio.getText());
                obj.setendereco(endereco.getText());
                obj.settelefone(telefone.getText());
                obj.setoab(oab.getText());
                obj.setrg(rg.getText());
                obj.setcpf(cpf.getText());
                obj.settituloeleitor(tituloeleitor.getText());
                obj.setdatanascimento(datanascimento.getText());
                obj.setnaturalidade(naturalidade.getText());
                obj.setnacionalidade(nacionalidade.getText());
                obj.setespecialidade((String)especialidade.getSelectedItem());
                
             try{ 
        String drive = null;
                 
               Class.forName(drive);
                 
               Connection connection = null;  
        try {
                connection = (Connection) DriverManager.getConnection(url, "root", "");
        } catch (SQLException ex) {
        }
               
               java.sql.Statement Statement = connection.createStatement();
Statement.executeUpdate("Insert INTO advogado(nomeadvogado,escritorio,endereço,telefone,oab,rg,cpf,tituloeleitor,datanascimento,naturalidade,nacionalidade,especialidade )" + "VALUES (null ,'" + obj.getnomeadvogado() + "' , '" + obj.getescritorio() + "','" + obj.getendereco() +  "','" + obj.gettelefone() + "','" + obj.getoab() + "','" + obj.getrg() + "','" + obj.getcpf() + "','" + obj.gettituloeleitor() + "','" +  obj.getdatanascimento() + "','" + obj.getnaturalidade() + "','" + obj.getnacionalidade() + "','" + obj.getespecialidade() + "')");
         
                
JOptionPane.showMessageDialog(null,"Cadastro realiado com sucesso");
  
connection.close();

} catch (ClassNotFoundException erro) {
    
 JOptionPane.showMessageDialog(null, "Driver JDBC-ODBC não encontrado!");
 
} catch (SQLException erro) {
    
JOptionPane.showMessageDialog(null, "Problemas na conexao com a fonte de dados" + erro.toString());    
    
}
            
}

ERRO:

Exception in thread AWT-EventQueue-0 java.lang.NullPointerException

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:186)

at CadastrarAdvogado.botaoSalvarActionPerformed(CadastrarAdvogado.java:354)

at CadastrarAdvogado.access$300(CadastrarAdvogado.java:21)

at CadastrarAdvogado$4.actionPerformed(CadastrarAdvogado.java:139)

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:6504)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)

at java.awt.Component.processEvent(Component.java:6269)

at java.awt.Container.processEvent(Container.java:2229)

at java.awt.Component.dispatchEventImpl(Component.java:4860)

at java.awt.Container.dispatchEventImpl(Container.java:2287)

at java.awt.Component.dispatchEvent(Component.java:4686)

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:2713)

at java.awt.Component.dispatchEvent(Component.java:4686)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)

at java.awt.EventQueue.access$000(EventQueue.java:101)

at java.awt.EventQueue$3.run(EventQueue.java:666)

at java.awt.EventQueue$3.run(EventQueue.java:664)

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:680)

at java.awt.EventQueue$4.run(EventQueue.java:678)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

CONSTRUÍDO COM SUCESSO (tempo total: 9 segundos)

12 Respostas

JuniorMaia

NullPointerException, você está com alguma variavel ou ponteiro nullo, sem valor, verifique seus gets, e outra, vc usa a conexão com o banco no action do botão? oO Cria uma classe pra isso cara, e instancia no botão…

N

cara to perdido nesse codigo vo refazer tudo de novo

N

Necessito de ajuda tentei e reformulei o código não deu certo
private void botaoSalvarActionPerformed(java.awt.event.ActionEvent evt) {

String Sql = “com.mysql.jdbc.Driver”;

String url = “jdbc:mysql://localhost:3306/cpjudi”;

obj.setadvogado(nomeadvogado.getText());

obj.setescritorio(escritorio.getText());

obj.setendereco(endereco.getText());

obj.settelefone(telefone.getText());

obj.setoab(oab.getText());

obj.setrg(rg.getText());

obj.setcpf(cpf.getText());

obj.settituloeleitor(tituloeleitor.getText());

obj.setdatanascimento(datanascimento.getText());

obj.setnaturalidade(naturalidade.getText());

obj.setnacionalidade(nacionalidade.getText());

obj.setespecialidade((String)especialidade.getSelectedItem());

try{
String driver = null;

Class.forName(driver);

Connection connection = null;

try {

connection = (Connection) DriverManager.getConnection(url, root, “”);

} catch (SQLException ex) {

}

java.sql.Statement Statement = connection.createStatement();
Statement.executeUpdate(“Insert INTO advogado(nomeadvogado,escritorio,endereço,telefone,oab,rg,cpf,tituloeleitor,datanascimento,naturalidade,nacionalidade,especialidade )” + “VALUES (null ,’” + obj.getnomeadvogado() + “’ , '” + obj.getescritorio() + “’,’” + obj.getendereco() + “’,’” + obj.gettelefone() + “’,’” + obj.getoab() + “’,’” + obj.getrg() + “’,’” + obj.getcpf() + “’,’” + obj.gettituloeleitor() + “’,’” + obj.getdatanascimento() + “’,’” + obj.getnaturalidade() + “’,’” + obj.getnacionalidade() + “’,’” + obj.getespecialidade() + “’)”);

JOptionPane.showMessageDialog(null,“Cadastro realiado com sucesso”);

connection.close();

} catch (ClassNotFoundException erro) {

JOptionPane.showMessageDialog(null, “Driver JDBC-ODBC não encontrado!”);

} catch (SQLException erro) {

JOptionPane.showMessageDialog(null, “Problemas na conexao com a fonte de dados” + erro.toString());

}

}

ERRO:

Exception in thread AWT-EventQueue-0 java.lang.NullPointerException

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:186)

at CadastrarAdvogado.botaoSalvarActionPerformed(CadastrarAdvogado.java:354)

at CadastrarAdvogado.access$300(CadastrarAdvogado.java:21)

at CadastrarAdvogado$4.actionPerformed(CadastrarAdvogado.java:139)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:201

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:6504)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)

at java.awt.Component.processEvent(Component.java:6269)

at java.awt.Container.processEvent(Container.java:2229)

at java.awt.Component.dispatchEventImpl(Component.java:4860)

at java.awt.Container.dispatchEventImpl(Container.java:2287)

at java.awt.Component.dispatchEvent(Component.java:4686)

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:2713)

at java.awt.Component.dispatchEvent(Component.java:4686)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)

at java.awt.EventQueue.access$000(EventQueue.java:101)

at java.awt.EventQueue$3.run(EventQueue.java:666)

at java.awt.EventQueue$3.run(EventQueue.java:664)

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:680)

at java.awt.EventQueue$4.run(EventQueue.java:67

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:12

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

CONSTRUÍDO COM SUCESSO (tempo total: 9 segundos)
drsmachado

Antes de mais nada, corrija essa porcaria que ficou de tanto código misturado.
Use a tag [code] e formate adequadamente.

J

Amigo,
Utilize as tags code para postar o código e ficar mais legível.

O seu problema é que falta o driver do banco de dados. Veja que o driver esta null:

String driver = null;

Class.forName(driver);

Qual driver esta utilizando???

Tente:

String driver = "com.mysql.jdbc.Driver";

Class.forName(driver);
N

Obrigado pelas informações

agora me surgiu um novo problema ao compilar essa mensagem

problema na conexão com a fonte de dadosjava.sql.SQLException:Column count doesn’t match value count at row 1

E

Pessoal bom dia sou novo aqui e estou com um problema na hora de conectar ao banco
em si a aplicação com a string localhost está funcionando mas quando vou colocar em um outro pc da rede (já arrumei a string para o ip do servidor) mas o ip não está estático e toda vez que liga ele muda tem alguma coisa que posso fazer no java mesmo ou tenho que configurar primeiramente a rede para ter ip fixo ?

J

O problema é que o número de colunas da tabela não é o mesmo do número de parâmetros passado:

java.sql.Statement Statement = connection.createStatement();
Statement.executeUpdate("Insert INTO advogado(nomeadvogado,escritorio,endereço,telefone,oab,rg,cpf,tituloeleitor,datanascimento,naturalidade,nacionalidade,especialidade )" + "VALUES (null ,'" + obj.getnomeadvogado() + "' , '" + obj.getescritorio() + "','" + obj.getendereco() + "','" + obj.gettelefone() + "','" + obj.getoab() + "','" + obj.getrg() + "','" + obj.getcpf() + "','" + obj.gettituloeleitor() + "','" + obj.getdatanascimento() + "','" + obj.getnaturalidade() + "','" + obj.getnacionalidade() + "','" + obj.getespecialidade() + "')");

Veja, você especifica a coluna nomeadvogado, e antes de passar o nome, você esta colocando um null… talvez retirando resolva…

java.sql.Statement Statement = connection.createStatement();
Statement.executeUpdate("Insert INTO advogado(nomeadvogado,escritorio,endereço,telefone,oab,rg,cpf,tituloeleitor,datanascimento,naturalidade,nacionalidade,especialidade )" + "VALUES ('" + obj.getnomeadvogado() + "' , '" + obj.getescritorio() + "','" + obj.getendereco() + "','" + obj.gettelefone() + "','" + obj.getoab() + "','" + obj.getrg() + "','" + obj.getcpf() + "','" + obj.gettituloeleitor() + "','" + obj.getdatanascimento() + "','" + obj.getnaturalidade() + "','" + obj.getnacionalidade() + "','" + obj.getespecialidade() + "')");

Recomendo estudar um pouco JDBC para aprender boas praticas…
Seu programa terá muitos problemas escrevendo o código desta forma… um deles será problemas de SQL Injection…

denisspitfire

eduardoPalomo:
Pessoal bom dia sou novo aqui e estou com um problema na hora de conectar ao banco
em si a aplicação com a string localhost está funcionando mas quando vou colocar em um outro pc da rede (já arrumei a string para o ip do servidor) mas o ip não está estático e toda vez que liga ele muda tem alguma coisa que posso fazer no java mesmo ou tenho que configurar primeiramente a rede para ter ip fixo ?

Ao meu ver, precisa deixar estatico o IP ou em algum host fora do servidor (vish, porqueira detected!). Eu faria com ip fixo para nao dar problemas do genero.

denisspitfire

Cara tente assim

public void adiciona(Contato contato) {
		String sql = "insert into contatos(nome,email,endereco,dataNascimento) values (?,?,?,?)";
		try {
			PreparedStatement stmt = connection.prepareStatement(sql);
			stmt.setString(1, contato.getNome());
			stmt.setString(2, contato.getEmail());
			stmt.setString(3, contato.getEndereco());
			stmt.setDate(4, new Date(contato.getDataNascimento()
					.getTimeInMillis()));
			stmt.execute();
			stmt.close();

		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}

Antes precisa usar a conexao no objeto e depois adicionar com esse metodo. Qualquer duvida estamos ae.
Apostila fj21 da caelum tem isso… da uma olhada la

(este ja é um tratamento de SQL Injection)

E

denisspitfire:
eduardoPalomo:
Pessoal bom dia sou novo aqui e estou com um problema na hora de conectar ao banco
em si a aplicação com a string localhost está funcionando mas quando vou colocar em um outro pc da rede (já arrumei a string para o ip do servidor) mas o ip não está estático e toda vez que liga ele muda tem alguma coisa que posso fazer no java mesmo ou tenho que configurar primeiramente a rede para ter ip fixo ?

Ao meu ver, precisa deixar estatico o IP ou em algum host fora do servidor (vish, porqueira detected!). Eu faria com ip fixo para nao dar problemas do genero.

Eu deixei o ip estático o pc está pingando o servidor e o servidor está pingando o pc mas não consigo fazer as operações com o programa , já arrumei a string de conexão e tudo já add a exceção da porta 3306 no firewall já abilitei acesso remoto no mysql mas não estou conseguindo

denisspitfire

cria um teste de conexao, esquece as operações

Criado 17 de maio de 2012
Ultima resposta 22 de mai. de 2012
Respostas 12
Participantes 6