Ola,
tenho um método salvar que pesquisa e verifica se já existe uma turma exatamente igual ele altera, se não ele insere uma nova.O problema é que ele esta alterando a turma já existente e inserindo uma nova :S
Alguém poderia me ajudar a encontrar o erro? O código do método salvar é o seguinte:
[code]public void salvar(Turma turma) throws Exception
{
try
{
PreparedStatement p = conexao.prepareStatement(“select * from turma where nome=’”+turma.getNome()+"’ and id_ensino=’"+turma.getId_ensino()+"’ and id_tipoturma=’"+turma.getId_tipoturma()+"’");
ResultSet resultado = p.executeQuery();
if(resultado.next())
turma.setId(resultado.getInt(“id”));
if(turma.getId()>0)
{
alterar(turma);
}
else
{
PreparedStatement ps = conexao.prepareStatement("insert into turma (nome,id,ano,semestre,id_ensino,id_periodo,id_tipoturma,totalAlunosTurma) values(?,?,?,?,?,?,?,?) ");
ps.setString(1, turma.getNome());
ps.setInt(2, turma.getId());
…
ps.executeUpdate();
}
}
catch(Exception e)
{
e.printStackTrace();
throw e;
}
}[/code]
Método alterar:
public void alterar(Turma turma)
{
try{
StringBuffer sql = new StringBuffer();
sql.append("update turma set nome = ?,ano = ?, semestre = ?,id_ensino = ?, id_periodo = ?, id_tipoturma = ?,totalAlunosTurma = ? where id = ? ");
PreparedStatement ps = conexao.prepareStatement(sql.toString());
ps.setString(1, turma.getNome());
...
ps.executeUpdate();
}
catch(Exception e)
{
e.printStackTrace();
}
}
Obrigada =D
E também pode ser que quando ele não encontra , devido ao nome estar com espaço ou alguma coisa assim, ele não entra naquele if para o update e vai em insert novamente. Você tem que conferir se o nome está vindo correto … tipo acentuação, espaços essas coisas
Bom dia Rodrigo,
Fiz esta alteração no método alterar mas acusa o seguinte erro:
java.sql.SQLException: No value specified for parameter 2
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:929)
at com.mysql.jdbc.PreparedStatement.checkAllParametersSet(PreparedStatement.java:2560)
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2536)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2383)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2327)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2312)
at TurmaDAO.alterar(TurmaDAO.java:164)
at TurmaDAO.salvar(TurmaDAO.java:127)
...
Aponta para as linhas ps.executeUpdate();//linha 164 e alterar(turma);//linha 127
obg =D
Hum, no seu insert você passa um id, mas da onde ver esse id, sendo que se não existe no banco ele deve estar na memória sobre escrevendo algum registro seu …