Boa noite…
Estou com um problema que nao consigo resolver ja li varios post, API mas nao entendi como funciona…
preciso carregar o meu JComboBox com os dados do BD mas nao consigo veja como to entando fazer…
import java.sql.Connection;
import java.sql.SQLException;
import org.omg.CORBA.PUBLIC_MEMBER;
public class ArrayList {
public static void ArrayList(){//verifica o codigo
try{
ConexaoMySql.statement = ConexaoMySql.connect.prepareStatement("SELECT Nome FROM professor");
int count = 0;
while(ConexaoMySql.resultSet.next()){
count++;
}
String[] x = new String[count];
ConexaoMySql.resultSet.beforeFirst();
int i = 0;
while(ConexaoMySql.resultSet.next()){
x[i] = ConexaoMySql.resultSet.getString("Nome");
i++;
}
}catch(SQLException e){
System.out.println(e.getMessage());
}
return;
}
}
private void ComboSituacao() {
Sit_AgendaJpaController sit_agendajpa = new Sit_AgendaJpaController();
List<Sit_Agenda> lstSitAg = new ArrayList<Sit_Agenda>();
try {
//procura no banco todas as entidades
lstSitAg = sit_agendajpa.findSit_AgendaEntities();
//remove tudo do combo
jCSit.removeAllItems();
//faz o iterator
Iterator<Sit_Agenda> i = lstSitAg.iterator(
while (i.hasNext()) {
//e vai adicionando item por item
jCSit.addItem(i.next());
}
} catch (Exception e) {
}
}
Se quiser melhorar, dê uma olhada em como funciona o ComboBoxModel. Você nem sequer vai precisar criar uma subclasse de JComboBox, nem criar aquele List<Integer> ali.
Também evite concatenar Strings em statements. O ideal é que as classes sejam criadas em DAOs específicos, e usando a passagem de parâmetro (com aquelas ?). Isso evita que o programador tenha que conhecer a versão String do banco, evita ataques de SQL Injection e também facilita para inserção de Strings, por causa dos apóstrofes.
Finalmente, mantenha sempre ResultSets, Statements e Conexões fechadas.
Preferencialmente, feche tudo num finally, logando as exceptions adequadamente, se ocorrerem.