Pessoal alguém pode me ajudar?

9 respostas
java
T

Meu código ta assim:

public class Clientes_DAO {

public void salvar_Clientes(Clientes clientes) throws SQLException{

Connection conexao_Banco_Dados = Conexao_Banco_Dados.getConexaoBD();

try{

PreparedStatement stmt = conexao_Banco_Dados.prepareStatement("insert into "

+ cadastro_clientes (nome_cliente, cadastro_pessoa_fisica, telefone_cliente_id, \n

+ endereco_cliente_id, genero_cliente_id, status_cliente) \n

+ values (?, ?, ?, ?, ?, ?));

stmt.setString(1, clientes.getNome_Cliente());

stmt.setString(2, clientes.getCadastro_Pessoa_Fisica());

stmt.setInt(3, clientes.getTelefone_Cliente_ID().getId_Telefone());

stmt.setInt(4, clientes.getEndereco_Cliente_ID().getId_Endereco());

stmt.setInt(5, clientes.getGenero_Cliente_ID().getId_Genero());

stmt.setBoolean(6, clientes.isStatus_Cliente());

stmt.executeUpdate(); //executar e atualizar la dentro

}catch(SQLException error){

throw new SQLException("FALHA AO INSERIR CLIENTE "+error);

}

}

}
clientes.setNome_Cliente(txt_Nome_Cliente.getText());

clientes.setCadastro_Pessoa_Fisica(txt_CPF.getText());

clientes.setTelefone_Cliente_ID(telefone);

clientes.setEndereco_Cliente_ID(endereco);

clientes.setGenero_Cliente_ID(genero);

clientes.setStatus_Cliente(false);

try {

clientes_DAO.salvar_Clientes(clientes);

Alert a = new Alert(Alert.AlertType.CONFIRMATION);

a.setHeaderText(CLIENTE SALVO NO BANCO DE DADOS!);

a.show();

} catch (SQLException ex) {

Alert a = new Alert(Alert.AlertType.ERROR);

a.setHeaderText(FALHA AO SALVAR CLIENTE NO BANCO DE DADOS!!+ex);

a.show();

}

}

Agradeço a quem pode me ajudar

9 Respostas

pmlm

A mensagem de erro é explicita. Estás a introduzir um valor para uma Foreign Key que não existe. O valor que está a ser colocado na coluna telefone_cliente_id da tabela cadastro_clientes não existe na tabela telefone.

T

você quer dizer que eu tenho que fazer um select para dai sim inserir? pois ai eu vou ter o valor

pmlm

Como estás agora a obter o valor para lá colocar?

T

Então estamos a trabalhar com varias tablas que tem ligação, como endereço, telefone e clientes, ai estou a fazer um insert, no caso eu devo inserir primeiro em endereço e depois em telefone e por último na de clientes. E é isso que eu fiz!
Mas quando eu vou fazer um insert em clientes eu vou setando:

Bloco de Citação

clientes.setNome_Cliente(txt_Nome_Cliente.getText());

clientes.setCadastro_Pessoa_Fisica(txt_CPF.getText());

clientes.setTelefone_Cliente_ID(telefone);

clientes.setEndereco_Cliente_ID(endereco);

Mas ai da aquele erro!
Antes de Inserir eu tenho que pegar o id de telefone e de endereço do Banco de Dados para ai sim inserir um cliente?
No caso o certo seria fazer um retorno de id para obter o numero que eu desejasse?
Um Select ?

pmlm

Sim, se o que tens na tua tabela de clientes é uma referencia para a tabela de telefones, o que precisas settar aqui não é o telefone mas o id do telefone na tua tabela de telefones.

T

Mais como eu seto?
Pois como eu estou mexendo com JavaFx, estou me embaçando tudo, no meu caso pensei em assim que o usuário salvar o cliente, faz o insert no banco de telefones e depois faz um select e passando por parâmetros os números e retornando o id no arrayList, mas eu não estou conseguindo pegar o valor do arrayList e setar na chave FK de clientes.

pmlm

Porque ArrayList?

T

Tem como fazer o Select sem que retorne uma lista?
Oque eu não entendo é como eu vou pegar esse id de telefone.

pmlm

Aconselho aprender o básico daqui: https://docs.oracle.com/javase/tutorial/jdbc/basics/index.html

Criado 30 de março de 2020
Ultima resposta 31 de mar. de 2020
Respostas 9
Participantes 2