[RESOLVIDO]Erro ao inserir dados no banco postgresql

7 respostas
M

Estou fazendo um crud, porem no metodo de inserir esta dando o seguinte erro:

Exception in thread JavaFX Application Thread java.lang.RuntimeException: java.lang.reflect.InvocationTargetException

at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1774)

at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1657)

at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)

at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)

at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)

at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)

at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)

at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)

at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)

at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)

at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)

at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)

at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)

at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)

at javafx.event.Event.fireEvent(Event.java:198)

at javafx.scene.Node.fireEvent(Node.java:8413)

at javafx.scene.control.Button.fire(Button.java:185)

at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182)

at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:96)

at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89)

at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)

at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)

at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)

at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)

at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)

at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)

at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)

at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)

at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)

at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)

at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)

at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)

at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)

at javafx.event.Event.fireEvent(Event.java:198)

at javafx.scene.Scene$MouseHandler.process(Scene.java:3757)

at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3485)

at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)

at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2494)

at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:381)

at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295)

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

at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$353(GlassViewEventHandler.java:417)

at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389)

at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:416)

at com.sun.glass.ui.View.handleMouseEvent(View.java:555)

at com.sun.glass.ui.View.notifyMouse(View.java:937)

at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)

at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)

at java.lang.Thread.run(Unknown Source)

Caused by: java.lang.reflect.InvocationTargetException

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at sun.reflect.misc.Trampoline.invoke(Unknown Source)

at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at sun.reflect.misc.MethodUtil.invoke(Unknown Source)

at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1771)

 48 more

Caused by: java.lang.NullPointerException

at control.FormularioDadosDiscosControl.SalvarDisco(FormularioDadosDiscosControl.java:89)

 58 more

botao onde chamo o metodo salvar:

void SalvarDisco() {
    	Disco disco = new Disco();
    	disco.setNomeDisco(txtNome.getText());
    	disco.setNomeCantor(txtCantor.getText());
    	disco.setNomeProdutor(txtProdutor.getText());
    	disco.setNomeSelo(txtSelo.getText());
    	disco.setNomeVertente(txtVertente.getText());
    	disco.setAnoProducao(txtAnoProducao.getText());
    	disco.setFormato(txtFormato.getText());
    	disco.setObs(txtObs.getText());
    	
    		dao.inserirDisco(disco);
    }

metodo salvar:

public boolean inserirDisco(Disco disco){
	con = new Conexao();
	
	String sql = "INSERT INTO \"DISCO\"(\"NM_DISCO\", \"NM_CANTOR\", \"NM_PRODUTOR\", \"SELO\",  "
			                           + " \"VERTENTE\",\"ANO_PRODUCAO\", \"FORMATO\", \"OBS\") "
			                           + "VALUES (?, ?, ?, ?, ?, ?, ?, ?);";
	
	try {
		PreparedStatement ps = con.getConexao().prepareStatement(sql);
		ps.setString(1, disco.getNomeDisco());
		ps.setString(2, disco.getNomeCantor());
		ps.setString(3, disco.getNomeProdutor());
		ps.setString(4, disco.getNomeSelo());
		ps.setString(5, disco.getNomeVertente());
		ps.setString(6, disco.getAnoProducao());
		ps.setString(7, disco.getFormato());
		ps.setString(8, disco.getObs());
		ps.executeQuery();
		ps.close();
		return true;
		
	} catch (SQLException e) {
		e.getMessage();
		return false;
	}
}

Metodo de conexao:

public Connection getConexao(){
	String url = "jdbc:postgresql://localhost:5432/DigitalCase";
	try {
		con = DriverManager.getConnection(url, "usuario", "senha");
		return con;
		
	} catch (SQLException e) {
		e.getMessage();
		return null;
	}
}

Alguem consegue me ajudar?

7 Respostas

darlan_machado

O que tem na linha 89 da classe FormularioDadosDiscosControl?

M

dao.inserirDisco(disco);

darlan_machado

Onde você instanciou o objeto dao? Você deve tê-lo declarado e não o instanciou.

M

eu instanciei no comeco da classe
DiscoDAO dao;

darlan_machado

Não, você declarou.
Instanciar é invocar uma nova instância, utilizando a palavra reservada new

DiscoDAO dao;//Declaração
dao = new DiscoDAO();//Aqui sim, cria-se uma instância, ou seja, está instanciando o objeto
M

acabei de verificar isso, instanciei ela dentro do metodo e funcionou.
estou quebrando a cabeça com isso a dias kkkk, vacilo meu
muito obrigado

darlan_machado

Fica tranquilo, é uma dificuldade extremamente comum quando estamos começando.
Vai ficar mais fácil quando você adotar um framework para inversão de controle/injeção de dependências. Mas, não se preocupe com isso agora.

Criado 30 de janeiro de 2018
Ultima resposta 30 de jan. de 2018
Respostas 7
Participantes 2