Oi, sheen.
shenn:
minhas duvidas?
vai precisar ter uma tabela no banco de dados para cada modelo de carro?
Quase isso. Você precisa de uma tabela de marcas e uma tabela de modelos, onde cada modelo terá uma relação com uma marca.
shenn:
como fica as querys? tipo vão ser apenas duas? pq a primeira de modelos de carros eu sei fazer mas e a segunda como fica?
a questão do java acho que consigo resolver...
vlww galeraa
Você cria suas classes de Domínio:
public class Marca {
private Long ID;
private String nome;
//getters e setters omitidos.
}
public class Modelo {
private Long ID;
private String nome;
private Marca marca;
//getters e setters omitidos.
}
Depois, cria suas classes DAO (acesso a dados):
public class MarcaDAO {
public Marca recuperarPorID(Long marcaID) throws SQLException {
Connection connection = ConnectionFactory.getConnection(); // cria sua conexão com o BD.
PreparedStatement statement = connection.prepareStatement("SELECT * FROM MARCAS WHERE ID = ?");
statement.setLong(1, marcaID);
ResultSet result = statement.executeQuery();
Marca marca = new Marca();
while (result.next()) {
marca.setID(result.getLong("ID"));
marca.setNome(result.getString("NOME"));
}
result.close();
return marca;
}
public List<Marca> recuperarTodas() throws SQLException {
Connection connection = ConnectionFactory.getConnection(); // cria sua conexão com o BD.
PreparedStatement statement = connection.prepareStatement("SELECT * FROM MARCAS");
ResultSet result = statement.executeQuery();
List<Marca> marcas = new ArrayList<Marca>();
while (result.next()) {
Marca marca = new Marca();
marca.setID(result.getLong("ID"));
marca.setNome(result.getString("NOME"));
marcas.add(marca);
}
result.close();
return marcas;
}
}
public class ModeloDAO {
public List<Modelo> recuperarModelosPorMarca(Long marcaID) throws SQLException {
Connection connection = ConnectionFactory.getConnection(); // cria sua conexão com o BD.
PreparedStatement statement = connection.prepareStatement("SELECT * FROM MODELOS WHERE MARCA = ?");
statement.setLong(1, marcaID);
ResultSet result = statement.executeQuery();
List<Modelo> modelos = new ArrayList<Modelo>();
MarcaDAO marcaDAO = new MarcaDAO();
while (result.next()) {
Modelo modelo = new Modelo();
modelo.setID(result.getLong("ID"));
modelo.setNome(result.getString("NOME"));
modelo.setMarca(marcaDAO.recuperarPorID(result.getLong("MARCA"));
modelos.add(modelo);
}
result.close();
return marcas;
}
}
Aí tá, você cria suas ComboBoxes, recuperando os dados e criando um model novo pra elas.
MarcaDAO marcaDAO = new MarcaDAO();
List<Marca> marcas = marcaDAO.recuperarTodas();
JComboBox comboboxMarca = new JComboBox(new DefaultComboBoxModel(marcas.toArray());
// aqui é vazio, só preenche na hora que mudar a marca.
JComboBox comboboxModelo = new JComboBox();
// adiciona um Listener para a combo de marcas, pra avisar quando mudar.
comboboxMarca.addItemListener(new ItemListener() {
public void stateChanged(ItemEvent event) {
ModeloDAO modeloDAO = new ModeloDAO();
Marca marca = (Marca) comboboxMarcas.getSelectedItem();
// recupero os modelos da marca selecionada.
List<Modelo> modelos = modeloDAO.recuperarModelosPorMarca(marca.getID());
comboboxModelos.setModel(new DefaultComboBoxModel(modelos.toArray()));
}
});
Claro, tá tudo sem arquitetura e sem boas práticas, mas é essa a ideia.
Espero ter ajudado, abraços!