Inserção no banco de dados(POSTGRESQL)

1 resposta
gabrielbarretosantos

Fala galera beleza, precisaria de uma força aqui, estou tentando cadastrar o aluno vinculado com o seu responsavel porém quando eu tento fazer isso aparece um erro :
ERRO: inserção ou atualização em tabela "aluno" viola restrição de chave estrangeira "alunos_fk"
Detalhe: Chave (id_responsavel)=(0) não está presente na tabela "responsavel".

Tentei de tudo e mais um pouco estou desesperado, fico no aguardo de alguma ajuda!

public class AlunoDao {

	/**
	 * Cadastra o Aluno
	 * 
	 * @param nome
	 * @param cgm
	 * @param turma
	 * @return
	 */

	public int cadastroAluno(Aluno aluno) {
		int retorno = 0;
		Connection con = null;
		try {
			int oi = localizaPai(aluno);
			con = new Conexao().criarConexao();
			String sql = "INSERT INTO aluno(id_responsavel,nome_aluno, cgm) VALUES (?,?,?)";
			PreparedStatement comando = con.prepareStatement(sql);
			comando.setInt(1, localizaPai(aluno));
			comando.setString(2, aluno.getNome());
			comando.setString(3, aluno.getCgm());
			comando.execute();
			comando.close();
			con.close();
		} catch (SQLException e) {
			System.out.println(e.getMessage());
		} catch (ClassNotFoundException e) {
			System.out.println(e.getMessage());
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
		return retorno;

	}

	public int localizaPai(Aluno aluno) {
		int retorno = 0;
		Connection con = null;
		try {
			con = new Conexao().criarConexao();
			String sql = "SELECT nome, cpf, id_responsavel FROM responsavel WHERE cpf = '?' ";
			PreparedStatement comando = con.prepareStatement(sql);
			ResultSet rs = comando.executeQuery();
			while (rs.next()) {
				retorno = rs.getInt("id_responsavel");
			}
			con.close();
		} catch (SQLException e) {
			System.out.println(e.getMessage());
		} catch (ClassNotFoundException e) {
			System.out.println(e.getMessage());
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
		return retorno;
	}
}

1 Resposta

E

mais repare bem q ele te deu a descriçao do erro

Chave (id_responsavel)=(0) não está presente na tabela “responsavel”

voce tem q passar um valor válido q exista na tabela resposánvel

debugue ou printe e veja qual id_responsavel está sendo setado no comando.setInt(1, localizaPai(aluno));

Criado 25 de setembro de 2014
Ultima resposta 25 de set. de 2014
Respostas 1
Participantes 2