[RESOLVIDO] Erro java.lang.NullPointerException ao popular JComboBox com dados do Banco de dados

Bom dia, estou com um problema no qual não consigo resolver, estou efetuando uma busca no banco de dados e estou tentando colocar dentro de um JComboBox porém fica com o erro java.lang.NullPointerException.

Erro no console

java.lang.NullPointerException
at br.isapa.sp.agendareuniao.dao.DAOReuniao.horarioDisponivel(DAOReuniao.java:89)
at br.isapa.sp.agendareuniao.gui.frames.FrameAgendamento$2.actionPerformed(FrameAgendamento.java:531)
at javax.swing.JComboBox.fireActionEvent(Unknown Source)
at javax.swing.JComboBox.setSelectedItem(Unknown Source)
at javax.swing.JComboBox.setSelectedIndex(Unknown Source)
at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.WaitDispatchSupport$2.run(Unknown Source)
at java.awt.WaitDispatchSupport$4.run(Unknown Source)
at java.awt.WaitDispatchSupport$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.WaitDispatchSupport.enter(Unknown Source)
at java.awt.Dialog.show(Unknown Source)
at java.awt.Component.show(Unknown Source)
at java.awt.Component.setVisible(Unknown Source)
at java.awt.Window.setVisible(Unknown Source)
at java.awt.Dialog.setVisible(Unknown Source)
at br.isapa.sp.agendareuniao.gui.frames.FramePrincipal$7.actionPerformed(FramePrincipal.java:325)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Classe DAOReuniao
Segue a parte do codigo que estou usando.

	public static void horarioDisponivel (Reuniao reuniao) throws Exception
{           final String SQL = "SELECT horarioInicio, horarioFinal FROM horario WHERE NOT EXISTS(SELECT horaInicio, horaFinal FROM agenda_reuniao "
			+ "WHERE agenda_reuniao.sala = ? AND agenda_reuniao.dataMesAno = ? AND horario.horarioInicio BETWEEN horaInicio AND horaFinal "
			+ "AND horario.horarioFinal BETWEEN horaInicio AND horaFinal )"

	try 
	{
		//1ª - Abrir a conexao
		ConexaoMySQL.abrir();

		PreparedStatement stmt = ConexaoMySQL.getConexao().prepareStatement(SQL, 
																PreparedStatement.RETURN_GENERATED_KEYS);
		
		//Aplicando os valores nos '?'
		stmt.setString(1, reuniao.getSala());
		stmt.setString(2, reuniao.getDataMesAno());
		
		//Executando o Script
		ResultSet resultSet = stmt.executeQuery();
		
		while(resultSet.next())
		{
			frameAgendamento.cbHoraInicio.addItem(resultSet.getString( 1 ));
			frameAgendamento.cbHoraFinal.addItem(resultSet.getString( 2 ));
		}
		frameAgendamento.cbHoraInicio.updateUI();
		frameAgendamento.cbHoraFinal.updateUI();
	} 
	catch (Exception e) 
	{
		//2ª - Jogar a exceção para cima com throw
		throw e;
	}
	finally
	{
		//3ª - Fechar a conexao
		//Este comando fica no finally porque a conexao deve ser encerrada
		//tanto se der erro quanto não der
		ConexaoMySQL.fechar();
	}
}

Classe FrameAgendamento
Segue a parte do codigo que eu tento chamar aquele metodo.

		ActionListener alHora = new ActionListener() {  @Override
		public void actionPerformed(ActionEvent e) {
			Reuniao reuniao = null;
			try {
				DAOReuniao.horarioDisponivel(reuniao);
			} catch (Exception e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			
		}
	};

	
	cbSala.addActionListener(alHora);

Já tentei instância como o reuniao e o DAOReuniao e não deu certo…
Devo estar fazendo alguma besteira.

Ex:
Reuniao reuniao = new Reuniao ();
DAOReuniao daoReuniao = new DAOReuniao();

ja tentou atualizar as dependencias do pom.xml ?

Não conheço esse pom.xml , como seria ?

Olá, tudo bom, amigo!?
Você está passando “reuniao” com valor nulo (Reuniao reuniao = null;). La dentro do seu método, o compilador não tem acesso aos métodos de “reuniao” para acessar (não estão instanciados)…
Você tenta usar o setstring chamando um método de um obj com referencia nula, que não existe até agora, que está oco, vazio (você passou obj nulo) - Então vc escreve: stmt.setString(1, reuniao.getSala()); O programa pergunta: - Quem é getSala()?? - reunião veio vazio! Entendeu? Ai deu Nullpointer…

Clareou?
Grande Abraço!
Samuel Menezes

smsrede, clareou.

Só que não sei o que fazer para ajustar.

Faço um método que pegue os valores nos campos?

Poderia me ajudar?

Eu fiz um método conforme abaixo:

private void popular(){
	Reuniao reuniao = null;
	reuniao = new Reuniao();

	reuniao.setSala((String) cbSala.getSelectedItem());
	
	
	Date date;
	date = jDate.getDate();
	SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");

	reuniao.setDataMesAno(formato.format(date));
	
	// String data recebe o conteúdo da variavel dataMesAno
	String data = reuniao.getDataMesAno();
	// Criando um array de 3 posições
	String array[] = new String[3];
	// Separando a String data a cada barra(/)
	array = data.split("/");
	// Variavel data recebe os array separados pelo hifen (-)
	data = array[2] + "-" + array[1] + "-" + array[0];

	int array1[] = new int[3];
	array1[0] = Integer.parseInt(array[0]);
	array1[1] = Integer.parseInt(array[1]);
	array1[2] = Integer.parseInt(array[2]);
	dia = array1[0];
	mes = array1[1];
	ano = array1[2];
	reuniao.setDataMesAno(data);
			
	try {
		DAOReuniao.horarioDisponivel(reuniao);
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

Nele o reunião recebe os valores da reuniao.setSala e reuniao.setDataMesAno e deixa de ser nulo.

Porem deu erro novamente e fiz o debug…

//Executando o Script
ResultSet resultSet = stmt.executeQuery();
			
    while(resultSet.next())
    			{
                    //Da o erro quando ele entra aqui
    				frameAgendamento.cbHoraInicio.addItem(resultSet.getString(1));
    				frameAgendamento.cbHoraFinal.addItem(resultSet.getString(2));
    			}
    			frameAgendamento.cbHoraInicio.updateUI();
    			frameAgendamento.cbHoraFinal.updateUI();

Tenha em mente o seguinte: Você está fazendo uma consulta ao banco que traz os dados que você vai encaixar no objeto.
A tabela reunião representa um obj, que tem correspondentes, as mesmas informações.

stmt.setString(1, reuniao.getSala());

Repare algo que achei estranho em seu código: você precisa usar o método SET não GET, ai em cima…pois você está buscando do banco para SETAR no seu objeto!
O numero, antes da virgula, representa cada campo lá do select, e essas chamadas => (stmt.setString(1,…), precisam “casar” com a sequencia do select (um campo => um atributo), pois cada campo que você retornar, entra num atributo do seu objeto. Eles tem que corresponder entre si! Campo nome vai para atributo nome; blz?

Se existir um atributo “nome”, por exemplo:

"SELECT nome, …"
stmt.setString(1, reuniao.setNome());

Esse objeto, você deve instanciar e entrega-lo ao método.
Por exemplo…numa aplicação caseira…lá no main, instancie reuniao e na linha seguinte chame seu método, passando o obj reunião instanciado.

Reuniao reuniao = new Reuniao();

horarioDisponivel (reuniao);

A partir desse momento você podera acessar:
reuniao.getSala();
reuniao.setSala();
reuniao.atributoXYZ = 1;
reuniao.nome = “teste”;

ou seja, lá dentro do seu método a aplicação poderá fazer o mesmo:

horarioDisponivel (reuniao);

(
"SELECT nome, …"
stmt.setString(1, reuniao.setNome());
)

Se fosse o caminho contrario, o obj já deveria vir inclusive preenchido. No nosso exemplo aqui, lá no MAIN, você iria preenche-lo e passá-lo ao DAO, e ENTÃO, lá dentro do seu métodoDAO, chamaria, agora, os GETs DESSE obj, para recuperar os dados dos atributos os quais acabou de preencher, antes, os quais, você fará o INSERT no banco!

Veja se consegue se achar com isso…

Abs,
Samuel

Na verdade está correto, devido ao fato que o método responsável por retornar os dados é o “get”, o mesmo pega os dados da variável da classe. Ele usaria set caso fosse definir alguma coisa na classe reunião.

Então, mas ele disse que quer definir, sim! :slight_smile:
Para ele montar o obj reuniao, com os dados vindos do select, obj qual deseja exibir depois, então ele precisa usar o SET para SETAR aquilo que veio do banco para o obj!

Ele usaria GET caso o obj estivesse vindo preenchido para entrar num DAO que fizesse insert no banco.
Desse forma, fazendo getNome, por exemplo, pegando esse retorno e inserindo no banco, pelo INSERT
:slight_smile:

Porém no trecho de código ele necessita preencher o select.
O método setString() funciona com o indice que deseja substituir a “?” e o valor com o qual quer preencher.
Ex: stmt.setstring(1, "Numero da Sala")
Logo o método set de qualquer atributo não serviria para pegar o valor que ele deseja, pois o mesmo serve para setar um valor a variável agregada, isso que eu estava tentando explicar.

stmt.setString(1, reuniao.getSala());

Nessa parte,eu estou indo na reuniao.getSala e buscando a sala que o usuário informou e atribuindo o valor no ? para o select.

Conforme informei, deve ser alguma coisa de errado nas linhas abaixo pois o debug para no 1º
frameAgendamento.

E da a mesma msg de erro.

 //Executando o Script
    ResultSet resultSet = stmt.executeQuery();
    			
        while(resultSet.next())
        			{
                        //Da o erro quando ele entra aqui
        				frameAgendamento.cbHoraInicio.addItem(resultSet.getString(1));
        				frameAgendamento.cbHoraFinal.addItem(resultSet.getString(2));
        			}

Erro

java.lang.NullPointerException
at br.isapa.sp.agendareuniao.dao.DAOReuniao.horarioDisponivel(DAOReuniao.java:100)
at br.isapa.sp.agendareuniao.gui.frames.FrameAgendamento.popular(FrameAgendamento.java:550)
at br.isapa.sp.agendareuniao.gui.frames.FrameAgendamento.access$1(FrameAgendamento.java:516)
at br.isapa.sp.agendareuniao.gui.frames.FrameAgendamento$2.actionPerformed(FrameAgendamento.java:571)
at javax.swing.JComboBox.fireActionEvent(Unknown Source)
at javax.swing.JComboBox.setSelectedItem(Unknown Source)
at javax.swing.JComboBox.setSelectedIndex(Unknown Source)
at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.WaitDispatchSupport$2.run(Unknown Source)
at java.awt.WaitDispatchSupport$4.run(Unknown Source)
at java.awt.WaitDispatchSupport$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.WaitDispatchSupport.enter(Unknown Source)
at java.awt.Dialog.show(Unknown Source)
at java.awt.Component.show(Unknown Source)
at java.awt.Component.setVisible(Unknown Source)
at java.awt.Window.setVisible(Unknown Source)
at java.awt.Dialog.setVisible(Unknown Source)
at br.isapa.sp.agendareuniao.gui.frames.FramePrincipal$7.actionPerformed(FramePrincipal.java:324)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Ainda estou pesquisando bastante.

Galera, eu acabei me adaptando por mais que eu não gostaria.

Fiz um método dentro da classe FrameAgendamento com conexão ao banco, sendo que gostaria que todas as conexões estivessem dentro da DAO.

Segue como ficou o método.

private void popularComboBox() throws Exception{

  String SQL = "SELECT TIME_FORMAT(horarioInicio, '%H:%i'),TIME_FORMAT(horarioFinal, '%H:%i') FROM horario WHERE NOT EXISTS(SELECT horaInicio, horaFinal FROM agenda_reuniao WHERE agenda_reuniao.sala = ? AND agenda_reuniao.dataMesAno = ? AND horario.horarioInicio BETWEEN horaInicio AND horaFinal AND horario.horarioFinal between horaInicio AND horaFinal )";
    
  try {		
  
  Reuniao reuniao = null;
  reuniao = new Reuniao();
  reuniao.setSala((String)  cbSala.getSelectedItem());
  
  Date date;
  date = jDate.getDate();
  SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
  reuniao.setDataMesAno(formato.format(date));
  
  // String data recebe o conteúdo da variavel dataMesAno
  String data = reuniao.getDataMesAno();
  // Criando um array de 3 posições
  String array[] = new String[3];
  // Separando a String data a cada barra(/)
  array = data.split("/");
  // Variavel data recebe os array separados pelo hifen (-)
  //data = array[2] + "-" + array[1] + "-" + array[0];
  data = (new StringBuilder(String.valueOf(array[2]))).append("-").append(array[1]).append("-").append(array[0]).toString();
  reuniao.setDataMesAno(data);
  
  //DAOReuniao.horarioDisponivel(reuniao);
  
  
  	ConexaoMySQL.abrir();
  	
  	PreparedStatement stmt = ConexaoMySQL.getConexao().prepareStatement(SQL);
  	
  	stmt.setString(1, reuniao.getSala());
  	stmt.setString(2, reuniao.getDataMesAno());
  	
  	ResultSet resultSet = stmt.executeQuery();
  	
  	cbHoraInicio.removeAllItems();
  	cbHoraInicio.removeAllItems();
  	
  	while(resultSet.next()){
  		cbHoraInicio.addItem(resultSet.getString("TIME_FORMAT(horarioInicio, '%H:%i')"));
  		cbHoraFinal.addItem(resultSet.getString("TIME_FORMAT(horarioFinal, '%H:%i')"));
  	}
  				
  } catch (ClassNotFoundException e1) {
  	System.out.println(e1.getMessage());
  	throw e1;
  }
  finally
  {
  	//3ª - Fechar a conexao
  	//Este comando fica no finally porque a conexao deve ser encerrada
  	//tanto se der erro quanto não der
  	ConexaoMySQL.fechar();
  }

}

Caso alguém consiga me ajudar a deixar tudo na DAO, eu ficaria feliz.

Obrigado a quem ajudou.

A sua classe DAOReuniao estende de Reuniao?
Caso sim, o problema é que a classe reunião não está sendo iniciada e preenchida corretamente.
Eu costumo usar os construtores da classe pra auxiliar em alguns métodos, por exemplo, utilizo um construtor que ao invoca-lo já preencha os dados na classe assim evitando ficar variáveis nulas causando esse erro que está ocorrendo com você.
Ex:

public Pessoa(int pessoaid, String nome, Date dataNasc, String usuario, String senha, String foto) {
 this.pessoaid = pessoaid;
 this.nome = nome;
 this.dataNasc = dataNasc;
 this.usuario = usuario;
 this.senha = senha;
 this.foto = foto;
 }

E implemento na classe dessa forma:

public boolean inserir(Pessoa user)