Bom dia , galera to desenvolvendo para faculdade mais não só sabendo muito bem como trabalha com os métodos salvar e listar quando existe chaves estrangeira na tabelas :
alguém sabe me fala como ficaria , Ex
Tabela veiculo , tenho chaves estrangeira : idcor , idmarca ,idnportas , idcat , idmodelo
preciso salvar atributos para todos mais não estou conseguindo , se realizo o insert sem as chaves estrangeiras funciona normal .
Segue imagem em anexo .
Alguém consegue me ajuda ???
Segue o CLASSE DAO
public class CarroDao {
public void excluir(Carro c) throws SQLException {
StringBuilder sql = new StringBuilder();
sql.append("DELETE FROM veiculo WHERE idveiculo = ?");
Connection conexao = Conexaofactory.conectar();
PreparedStatement comando = conexao.prepareStatement(sql.toString());
comando.setInt(1, c.getCodigo() );
comando.executeUpdate();
}
/**INSERE DADOS NA TABELA veiculo**/
public void salvar(Carro c) throws SQLException {
StringBuilder sql = new StringBuilder();
sql.append("INSERT INTO veiculo (placa, renavam, chassi, anofab) ");
sql.append("VALUES (?,?,?,?)");
Connection conexao = Conexaofactory.conectar();
PreparedStatement comando = conexao.prepareStatement(sql.toString());
comando.setString (1, c.getPlaca());
comando.setString (2, c.getRenavam());
comando.setString (3, c.getChassi());
comando.setString (4, c.getAno());
comando.executeUpdate();
StringBuilder sql2 = new StringBuilder();
sql2.append("INSERT INTO cor (descricao) ");
sql2.append("VALUES (?)");
PreparedStatement comando2 = conexao.prepareStatement(sql2.toString());
comando2.setString (1, c.getCor());
comando2.executeUpdate();
StringBuilder sql3 = new StringBuilder();
sql3.append("INSERT INTO marca (descricao) ");
sql3.append("VALUES (?)");
PreparedStatement comando3 = conexao.prepareStatement(sql3.toString());
comando3.setString (1, c.getMarca());
comando3.executeUpdate();
StringBuilder sql4 = new StringBuilder();
sql4.append("INSERT INTO nportas (descricao) ");
sql4.append("VALUES (?)");
PreparedStatement comando4 = conexao.prepareStatement(sql4.toString());
comando4.setString (1, c.getNportas());
comando4.executeUpdate();
StringBuilder sql5 = new StringBuilder();
sql5.append("INSERT INTO categoria (descricao) ");
sql5.append("VALUES (?)");
PreparedStatement comando5 = conexao.prepareStatement(sql5.toString());
comando5.setString (1, c.getCategoria());
comando5.executeUpdate();
StringBuilder sql6 = new StringBuilder();
sql6.append("INSERT INTO modelo (descricao) ");
sql6.append("VALUES (?)");
PreparedStatement comando6 = conexao.prepareStatement(sql6.toString());
comando6.setString (1, c.getModelo());
comando6.executeUpdate();
}
public void salvarcor (Carro c ) throws SQLException {
}
public void editar (Carro c) throws SQLException {
StringBuilder sql = new StringBuilder();
sql.append("UPDATE veiculo ");
sql.append("SET placa = ? , renavam = ? , chassi = ? , anofab = ? ");
sql.append("WHERE idveiculo = ?");
Connection conexao = Conexaofactory.conectar();
PreparedStatement comando = conexao.prepareStatement(sql.toString());
comando.setString (1, c.getPlaca());
comando.setString (2, c.getRenavam());
comando.setString (3, c.getChassi());
comando.setString (4, c.getAno());
comando.setInt (5, c.getCodigo());
comando.executeUpdate();
StringBuilder sql2 = new StringBuilder();
sql2.append("UPDATE cor ");
sql2.append("SET descricao = ? ");
sql2.append("WHERE idcor = ?");
PreparedStatement comando2 = conexao.prepareStatement(sql2.toString());
comando2.setString (1, c.getCor());
comando.executeUpdate();
StringBuilder sql3 = new StringBuilder();
sql3.append("UPDATE marca ");
sql3.append("SET descricao = ? ");
sql3.append("WHERE idmarca = ?");
PreparedStatement comando3 = conexao.prepareStatement(sql3.toString());
comando3.setString (1, c.getMarca());
comando3.executeUpdate();
StringBuilder sql4 = new StringBuilder();
sql4.append("UPDATE nportas ");
sql4.append("SET descricao = ? ");
sql4.append("WHERE idportas = ?");
PreparedStatement comando4 = conexao.prepareStatement(sql3.toString());
comando4.setString (1, c.getNportas());
comando4.executeUpdate();
StringBuilder sql5 = new StringBuilder();
sql5.append("UPDATE categoria ");
sql5.append("SET descricao = ? ");
sql5.append("WHERE idcat = ?");
PreparedStatement comando5 = conexao.prepareStatement(sql5.toString());
comando5.setString (1, c.getCategoria());
comando5.executeUpdate();
StringBuilder sql6 = new StringBuilder();
sql6.append("UPDATE modelo ");
sql6.append("SET descricao = ? ");
sql6.append("WHERE idmodelo = ?");
PreparedStatement comando6 = conexao.prepareStatement(sql6.toString());
comando6.setString (1, c.getModelo());
comando6.executeUpdate();
}
public Carro buscaporcodigo(Carro c) throws SQLException {
StringBuilder sql = new StringBuilder();
sql.append("SELECT idveiculo, placa , renavam , chassi , anofab ");
sql.append("FROM veiculo ");
sql.append("WHERE idveiculo = ?");
Connection conexao = Conexaofactory.conectar();
PreparedStatement comando = conexao.prepareStatement(sql.toString());
comando.setInt (1, c.getCodigo());
ResultSet resultado = comando.executeQuery();
Carro retorno = null ;
if (resultado.next()) {
retorno = new Carro();
retorno.setCodigo(resultado.getInt("idveiculo"));
retorno.setPlaca(resultado.getString("placa"));
retorno.setRenavam(resultado.getString("renavam"));
retorno.setChassi (resultado.getString("chassi"));
retorno.setAno (resultado.getString("anofab"));
}
return retorno;
}
public ArrayList<Carro>buscarporPlaca(Carro c)throws SQLException {
StringBuilder sql = new StringBuilder();
sql.append("SELECT idveiculo, placa , renavam , chassi , anofab ");
sql.append("FROM veiculo ");
sql.append("WHERE placa LIKE ? ");
Connection conexao = Conexaofactory.conectar();
PreparedStatement comando = conexao.prepareStatement(sql.toString());
comando.setString(1,"%" + c.getPlaca() + "%");
ResultSet resultado = comando.executeQuery();
ArrayList<Carro>lista = new ArrayList<Carro>();
while(resultado.next()){
Carro item = new Carro();
c.setCodigo(resultado.getInt("idveiculo")) ;
c.setPlaca(resultado.getString("placa")) ;
c.setRenavam(resultado.getString("renavam")) ;
c.setChassi(resultado.getString("chassi")) ;
c.setAno(resultado.getString("anofab")) ;
lista.add(item);
}
return lista;
}
public ArrayList<Carro> listar () throws SQLException{
StringBuilder sql = new StringBuilder();
sql.append("SELECT idveiculo, placa , renavam , chassi , anofab , cor.descricao as 'c.descricao', marca.descricao as 'marca_descricao',nportas.descricao as 'nportas_descricao',categoria.descricao as 'categoria_descricao',modelo.descricao as 'modelo_descricao' ");
sql.append("FROM veiculo ");
sql.append ("INNER JOIN cor ON v.idcor = c.idcor;");
sql.append ("INNER JOIN marca ON marca.idmarca=marca.idmarca ");
sql.append ("INNER JOIN nportas ON nportas.idnportass=nportas.idnportas ");
sql.append ("INNER JOIN categoria ON categoria.idcat=categoria.idcat ");
sql.append ("INNER JOIN modelo ON modelo.idmodelo=modelo.idmodelo ");
sql.append("ORDER BY placa,renavam,chassi,anofab, c.descricao , marca.descricao, nportas.descricao,categoria.descricao,modelo.descricao ASC ");
Connection conexao = Conexaofactory.conectar();
PreparedStatement comando = conexao.prepareStatement(sql.toString());
ResultSet resultado = comando.executeQuery();
ArrayList<Carro>lista = new ArrayList<Carro>();
while(resultado.next()){
Carro c = new Carro();
c.setCodigo(resultado.getInt("idveiculo")) ;
c.setPlaca(resultado.getString("placa")) ;
c.setRenavam(resultado.getString("renavam")) ;
c.setChassi(resultado.getString("chassi")) ;
c.setAno(resultado.getString("anofab")) ;
c.setCor(resultado.getString("cor.descricao")) ;
c.setMarca(resultado.getString("marca_descricao")) ;
c.setNportas(resultado.getString("nportas_descricao")) ;
c.setCategoria(resultado.getString("categoria_descricao")) ;
c.setModelo(resultado.getString("modelo_descricao")) ;
lista.add(c);
}
return lista;
}
}
CLASSE CARRO
public class Carro {
private int codigo;
private String placa;
private String renavam;
private String chassi;
private String ano;
private String cor;
private String marca;
private String nportas;
private String categoria;
private String modelo;
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public String getPlaca() {
return placa;
}
public void setPlaca(String placa) {
this.placa = placa;
}
public String getRenavam() {
return renavam;
}
public void setRenavam(String renavam) {
this.renavam = renavam;
}
public String getChassi() {
return chassi;
}
public void setChassi(String chassi) {
this.chassi = chassi;
}
public String getAno() {
return ano;
}
public void setAno(String ano) {
this.ano = ano;
}
public String getCor() {
return cor;
}
public void setCor(String cor) {
this.cor = cor;
}
public String getMarca() {
return marca;
}
public void setMarca(String marca) {
this.marca = marca;
}
public String getNportas() {
return nportas;
}
public void setNportas(String nportas) {
this.nportas = nportas;
}
public String getCategoria() {
return categoria;
}
public void setCategoria(String categoria) {
this.categoria = categoria;
}
public String getModelo() {
return modelo;
}
public void setModelo(String modelo) {
this.modelo = modelo;
}
public String toString() {
String saida = codigo + " - "+ placa + " - "+ renavam + " - "+ chassi + " - "+ ano +" - "+ cor +" - "+ marca +" - " + nportas +" - "+ categoria + " - "+ modelo;
return saida;
}
}
CLASSE BEAN
public class CarroBean {
private ArrayList <Carro> itens;
private ArrayList <Carro> itensfiltrados;
private Carro carro;
public ArrayList<Carro> getItens() {
return itens;
}
public void setItens(ArrayList<Carro> itens) {
this.itens = itens;
}
public ArrayList<Carro> getItensfiltrados() {
return itensfiltrados;
}
public void setItensfiltrados(ArrayList<Carro> itensfiltrados) {
this.itensfiltrados = itensfiltrados;
}
@PostConstruct
public void PrepararPesquisa () {
try {
CarroDao cdao = new CarroDao();
itens = cdao.listar();
JSFUtil.adicionarMensagemErro("Ex.getMessage()");
} catch (SQLException e) {
e.printStackTrace();
}
}
/*
* Abaixo e feito a parte de atualização da lista automatica na tela de Pesquisa veiculo
*/
public void prepararnovo() {
carro = new Carro();
}
public void novo() {
try {
CarroDao cdao = new CarroDao();
cdao.salvar(carro);
itens = cdao.listar();
JSFUtil.adicionarMensagemSucesso("Salvo com Sucesso");
} catch (SQLException e) {
JSFUtil.adicionarMensagemErro("Ex.getMessage()");
e.printStackTrace();
}
}
public void excluir () {
try {
CarroDao cdao = new CarroDao();
cdao.excluir(carro);
itens = cdao.listar();
JSFUtil.adicionarMensagemSucesso("Exclusão realizada com sucesso");
} catch (SQLException e) {
JSFUtil.adicionarMensagemErro("Ex.getMessage()");
e.printStackTrace();
}
}
public void editar () {
try {
CarroDao cdao = new CarroDao();
cdao.editar(carro);
itens = cdao.listar();
JSFUtil.adicionarMensagemSucesso("Edição realizada com sucesso");
} catch (SQLException e) {
JSFUtil.adicionarMensagemErro("Ex.getMessage()");
e.printStackTrace();
}
}
public Carro getCarro() {
return carro;
}
public void setCarro(Carro carro) {
this.carro = carro;
}
}