Problema ao inserir dados no banco

8 respostas
P
Ola, estou tentando salvar o id das disciplinas(checkboxes) q estão sendo selecionadas na tela mas não esta funcionando tipo o código não esta gerando erro mas também não esta salvando no banco =( O código do meu método para salvar as disciplinas é o seguinte:
public void salvaDisciplinasNaTurma(JCheckBox ck[],Turma turma)throws Exception
	{
		for(int i=0;i<ck.length;i++)
		{	
			if(ck[i]!=null)
			{
if(ck[i].isSelected())
				{
					PreparedStatement ps= conexao.prepareStatement("select d.id,t.id from disciplina d,turma t where d.nome= ? and t.nome= ? and t.id_ensino=d.id_ensino ");
					ps.setString(1, ck[i].getText());
					ps.setString(2, turma.getNome());
					ResultSet resultado = ps.executeQuery();
					while(resultado.next())
					{
						if(resultado.getInt(1)>0)
						{comando.executeUpdate("insert into turma_disciplina (id_turma,id_disciplina) values ('" +resultado.getInt(2)+ "','" + resultado.getInt(1) + "')" );
						}
					}
				}
			}
		}
	}
Aqui é o método em que eu chamo o método acima dentro de outra classe:
botaoAdicionaDisciplina.addActionListener (new ActionListener (){ //ADD AS DISCIPLINAS NA TURMA
			public void actionPerformed(ActionEvent e)
			{

				try{
					Turma novaTurma=new Turma();
					TurmaDAO turmadao=new TurmaDAO();
					turmadao.salvaDisciplinasNaTurma(ck,novaTurma);
					JOptionPane.showMessageDialog(null, "Dados inseridos com sucesso!");
				}
				catch(Exception e1)
				{
					JOptionPane.showMessageDialog(null, "A turma não esta cadastrada no banco!"+e1.getMessage());
					e1.printStackTrace();
				}
			}});

Alguém pode me ajudar a encontrar o erro =/
Obrigada!

8 Respostas

mauricioadl

tenta usar conexao.commit();

P
Ola Mauricioadl, então
conexao.commit();
eu uso no final do método? fiz mais algumas alterações e agora esta ocorrendo um erro
java.lang.NullPointerException
e cujo as linhas de erro são as seguintes
comando.executeUpdate("insert into turma_disciplina (id_turma,id_disciplina) values ('" +resultado.getInt(2)+ "','" + resultado.getInt(1) + "')" );
e a outra linha é
turmadao.salvaDisciplinasNaTurma(ck,novaTurma);
Ah!as alterações q fiz foram as seguintes: botaoAdicionaDisciplina.addActionListener (new ActionListener (){ //ADD AS DISCIPLINAS NA TURMA
public void actionPerformed(ActionEvent e)
			{

				try{
					Turma novaTurma=new Turma();
					[b]novaTurma.setNome(ttxtNomeTurma.getText());
					novaTurma.setSemestre(Integer.parseInt(txtSemestre.getText()));
					novaTurma.setAno(Integer.parseInt(txtAno.getText()));[/b]
...
obrigada!
mauricioadl

java.lang.NullPointerException

esse erro ocorre quando vc tenta usar um array ou uma variavel/atributo que esta nulo. Provavelmente os resultados de; resultado.getInt(2)+ “’,’” + resultado.getInt(1) nao estao vindo, verifique se a sua consulta esta correta!

P

Ola,
testei no banco mas a consulta gera resultados :roll:
Segue um print da pesquisa no banco!
Obrigada


mauricioadl

bom, vamos por partes.

vc colocou o commit()?

ele tem q ser colocado no final de qualquer instrução sql que há alteração na base de dados, isso faz com q sua transação seja efetivada.

vc esta tentando gravar checkbox certo? como eles estao no banco de dados? tipo boolean mesmo?

P

oi,
coloquei o commit() no final da instrução sql e gerou este erro :S java.sql.SQLException: Can't call commit when autocommit=true at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:933) at com.mysql.jdbc.ConnectionImpl.commit(ConnectionImpl.java:1635)....

eu to tentando gravar o texto dos checkboxes selecionados já que eles são as disciplinas que estão salvas no banco para poder relacioná-los às turmas

obrigada :smiley:

mauricioadl

mas, qual é o tipo dos checkbox no banco? varchar, boolean, byte??? pode ser esse o problema

P

eu salvo o texto dos checkboxes no banco e o tipo que uso é Varchar

:)brigada

Criado 11 de agosto de 2011
Ultima resposta 17 de ago. de 2011
Respostas 8
Participantes 2