Código para "inserir" no Banco de Dados com Chave Estrangeira [RESOLVIDO]

4 respostas
shmgouvea

Olá pessoal,

Bem, sou nova aqui no fórum, e já dei uma revirada em google, guj… e não achei o que queria, então resolvi postar aqui
Estou fazendo um projeto de faculdade, que é um banco de dados de DOAÇÃO DE ÓRGÃOS
Só para vcs entenderem, são 4 tabelas: DOADOR, RECEPTOR, ÓRGÃO e ESTOQUE
ESTOQUE tem a Id própria e recebe 3 chaves estrangeiras, uma de cada uma das outras tabelas
As outras 3 tabelas já implementei com interface e tudo… E agora comecei a implementação do ESTOQUE… fiz as classes Estoque, EstoqueDAO e TestaEstoque
Estou tentando testar o adicionar… Não sei se a linha de raciocínio do adicionar está certa… Eu vou tentar explicar primeiro como deve funcionar:

Eu tenho que fazer um formulário ESTOQUE onde o usuário entra com a Id do doador, Id do receptor e Id do órgão, relacionando assim essas 3 chaves estrangeiras… Então tenho que pegar essas id’s que o usuário escolheu das minhas outras classes (DOADOR, RECEPTOR e ESTOQUE) e adicioná-las. Na consulta, devo pedir para o usuário escolher pesquisar por doador, receptor ou órgão, pedir para ele entrar com a id respectiva e em seguida listar o respectivo cadastro no estoque…
A lista até que saiu no meu teste aqui (TUDO SEM INTERFACE AINDA), mas o adiciona eu to perdida…

A minha pergunta é: como fazer ( num sysout mesmo, só para teste ) para adicionar os id’s que o usuário digitar nesse form? Em código:

CLASSE Estoque

package br.com.orgaobd.entidades;

public class Estoque {

	private int esId;
	private Doador doador;
	private Receptor receptor;
	private Orgao orgao;

//gets and sets

CLASSE EstoqueDAO

package br.com.orgaobd.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import br.com.orgaobd.entidades.Doador;
import br.com.orgaobd.entidades.Estoque;
import br.com.orgaobd.entidades.Orgao;
import br.com.orgaobd.entidades.Receptor;
import br.com.orgaobd.jdbc.ConnectionFactory;

public class EstoqueDAO {
	
	private Connection connection = new ConnectionFactory().getConnection();

	public EstoqueDAO() throws SQLException {

	}
	public void adiciona(Estoque estoque) {

		String sql = "insert into estoque(esDoId, esReId, esOrgId) values (?,?,?)";

		try {

			PreparedStatement ps = this.connection.prepareStatement(sql);
			
			ps.setInt(1, estoque.getDoador().getDoId());
			ps.setInt(2, estoque.getReceptor().getReId());
			ps.setInt(3, estoque.getOrgao().getOrgId());
			
                        ps.execute();
			ps.close();

		} catch (SQLException e) {

			throw new RuntimeException(e);

		}

	}
	
	public List<Estoque> getLista(int idDo) {

		try {
			List<Estoque> dados = new ArrayList<Estoque>();
			PreparedStatement ps = this.connection.prepareStatement("select r.reNome,o.orgNome from receptor r, orgao o, estoque e, doador d where e.esReId=r.reId and e.esOrgId=o.orgId and e.esDoId=?");
			
			ps.setInt(1, idDo);

			ResultSet rs = ps.executeQuery();

			while (rs.next())
			{
				Estoque estoque = new Estoque();
				
				Orgao orgao = new Orgao();
				orgao.setOrgNome(rs.getString("o.orgNome"));
				estoque.setOrgao(orgao);
				
				Receptor receptor = new Receptor();
				receptor.setReNome(rs.getString("r.reNome"));
				estoque.setReceptor(receptor);
				
				dados.add(estoque);

			}

			rs.close();
			ps.close();

			return dados;

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			throw new RuntimeException(e);
		}

	}}

CLASSE TestaEstoque

package br.com.orgaobd.teste;

import java.util.List;

import javax.swing.JOptionPane;

import br.com.orgaobd.dao.EstoqueDAO;
import br.com.orgaobd.entidades.Estoque;

public class TestaEstoque {

	public static void main(String[] args) {

		//TESTA LISTA
		/*
		try{
			
			EstoqueDAO dao = new EstoqueDAO();
			List<Estoque> dados = dao.getLista(2);
			
			for(Estoque estoque : dados){
				
				System.out.println("Id estoque: " + estoque.getEsId());
				System.out.println("Id doador: " + estoque.getDoador().getDoId());
				System.out.println("Id receptor: " + estoque.getReceptor().getReId());
				System.out.println("Id orgao: " + estoque.getOrgao().getOrgId());
				
			}
			System.out.println("");
			System.out.println("FIM DA LISTA");
			
		}catch(Exception e){ System.out.println(e); }
	}
	
	*/
	//TESTA ADICIONA
	
	Estoque estoque = new Estoque();

	/*###################################
      AQUI!!! COMO FAÇO PARA SETAR OS DADOS QUE O USUÁRIO ENTRAR??
        ###################################*/

	if(JOptionPane.showConfirmDialog(null, "Confirmar cadastro?") ==
	JOptionPane.YES_OPTION) { try {
	
	EstoqueDAO dao = null;
	dao = new EstoqueDAO();
	dao.adiciona(estoque);
	JOptionPane.showMessageDialog(null,"Cadastro de estoque adicionado");
	
	} catch (Exception e) {
	
	System.out.println(e); } 
	
	}
	
	}
	
}

Obrigadaaaaa desde já!!

4 Respostas

ViniGodoy

Olá. Bem-vinda ao fórum.

Por favor, não peça ajuda ou urgência nos títulos dos tópicos (“HELP!”, “Me ajudem!!!”, “Socorro!!”, escrever tudo em maiúscula, etc). Além disso, leia atentamente a descrição de nossos fóruns antes de postar, sua dúvida se encaixa no fórum de Persistência. Você, aparentemente, não tem dúvida na sintaxe básica do Java (if, else, while, etc) para coloca-los em Java Básico.

ViniGodoy

Para setar, você faz como fez na hora de carregar o sua classe. Usa os sets, normalmente, só que passando os textos que o usuário digitou.

P

Quando for mapear seu banco deixe a propriedade ID como auto-increment e deixe o campo ID em branco que será gerado um novo ID para o mesmo.

Mas enquanto você não tem isso mapeado, vai ter fazer o controle do ID manualmente.

shmgouvea

Sorry os inconvenientes… Da próxima eu acerto =)!
Era errinho bobo… já foi resolvido… embora to vendo que vou ter que postar muito aqui até terminar esse projeto
Obrigada a todos!!!

Criado 15 de junho de 2011
Ultima resposta 16 de jun. de 2011
Respostas 4
Participantes 3