Boa noite galera!!!
To tentando aprender aqui como inserir uma chave estrangeira numa tabela no banco de dados, mas até agora a lógica eu sei, to com dificuldades é na implementação desta lógico… é o seguinte, no banco de dados tenho duas tabelas simples, cliente e compra, onde um cliente pode fazer várias compras, nesse relacionamento a chave primária da tabela cliente vai para a tabela compras, agora eu quero aprender como inserir dentro da tabela compras o valor da chave primária da tabela cliente durante uma venda, terei um ComboBox listando os nomes dos clientes, e usuário vai descrever a venda e escolher o cliente que irá comprar no ComboBox, tenho a interface feita, estou desenvolvendo utilizando DAO por camadas, mas a maior dificuldade é na parte que vai para o Banco, ou seja a parte de Persistencia, vo postar os códigos que tenho aqui, mas nao ta dando certo, ta dando erro, e pelo jeito é erro na codificação…nos códigos estão a lógica que criei, e também vo postar o erro que está aparecendo…
ERRO DO MÉTODO DAO
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:343)
at Banco.TesteDAO.inserirCompra(TesteDAO.java:47)
at Negocio.CompraNegocio.inserirCompra(CompraNegocio.java:21)
at Apresentacao.Frame.bt_produtoActionPerformed(Frame.java:144)
at Apre
MÉTODO QUE INSERE COMPRAS DO DAO
[code] public void inserirCompra(Compra compra ,String nomecliente) throws SQLException{
// Abrir uma conexao
Connection conn = Conexao.getConexao();
String val = "Select idcliente cliente where nome = nomecliente";
PreparedStatement stmt = conn.prepareStatement(val);
ResultSet rs = stmt.executeQuery();
while(rs.next()){
compra.setIdcliente(rs.getInt("idcliente"));
}
String sql = "insert into compra(produto,idcliente)" + "values(?,val)";
PreparedStatement stmt2 = conn.prepareStatement(sql);
stmt2.setString(1, compra.getProduto());
stmt2.setInt(2,compra.getIdcliente());
stmt2.execute();
stmt2.close();
}[/code]
MÉTODO DA REGRA DE NEGÓCIO
[code]public void inserirCompra(String produto,String nomecliente) throws SQLException{
Compra compra = new Compra(produto);
TesteDAO cDAO = new TesteDAO();
cDAO.inserirCompra(compra, nomecliente);
}[/code]
BOTAO CADASTRAR PRODUTOS
[code] private void bt_produtoActionPerformed(java.awt.event.ActionEvent evt) {
if(evt.getSource() == bt_produto){
CompraNegocio compra = new CompraNegocio();
try {
compra.inserirCompra(tf_produto.getText(), (String) cbox.getSelectedItem().toString());
} catch (SQLException ex) {
Logger.getLogger(Frame.class.getName()).log(Level.SEVERE, null, ex);
}
}
}[/code]

