Pessoal… mais uma vez preciso dee ajuda.
Estou usando um Arraylist que guarda o resultado de um select randômico de 20 posições.
O problema é… ele sempre perde 1 posição.
O Banco possui 30 perguntas, ele traz sempre 19 ( o limit é 20 )
Olhem o código…
String url="jdbc:mysql://ip:porta/banco";
Connection con;
Statement stmt;
try {
Class.forName("com.mysql.jdbc.Driver"); // localizando o Driver de Conexão
}
catch (java.lang.ClassNotFoundException e) {
System.err.print("ClassNotFoundException: "); // tratamento de erro da conexão
System.err.println(e.getMessage());
}
// Bloco de conexão e análise
try {
con = DriverManager.getConnection (url, "root","");
con.setAutoCommit(false);
String sql = "select * from tb_dados where cat = 'manager' order by rand() limit 20;";
PreparedStatement p = con.prepareStatement(sql);
ResultSet rs = p.executeQuery(sql); // executando comando no mysql.]
if (!rs.next()) // verifica se o resultado foi encontrado
{
JOptionPane.showMessageDialog(null,"Não existem questões para o Módulo Selecionado.","Erro de Processamento",JOptionPane.INFORMATION_MESSAGE);
}
else {
while(rs.next()){
lista.add(rs.getString("p"));
lista.add(rs.getString("rp1"));
lista.add(rs.getString("rp2"));
lista.add(rs.getString("rp3"));
lista.add(rs.getString("rp4"));
lista.add(rs.getString("rp5"));
lista.add(rs.getString("rpc"));
}
for (Iterator it = lista.iterator();it.hasNext();){
System.out.println(it.next());
}
}
p.close(); // Fechando conexão
con.close();
}
catch(SQLException ex) {
System.err.print("SQLException: "); // tratamento de erros do bloco ded conexão e análise.
System.err.println(ex.getMessage());
}
txt_pergunta.setText(lista.get(0).toString());
txt_r1.setText(lista.get(1).toString());
txt_r2.setText(lista.get(2).toString());
txt_r3.setText(lista.get(3).toString());
txt_r4.setText(lista.get(4).toString());
txt_r5.setText(lista.get(5).toString());
Esta parte ele simplesmente exibe as 6 primeiras posições… Quando clico no confirmar, ele retira essas 6 posições e exibe outras 6. Tb postei o código.
if (op1.isSelected()){
conf = "A";
}
else
if (op2.isSelected()){
conf = "B";
}
else
if(op3.isSelected()){
conf = "C";
}
else
if (op4.isSelected()){
conf = "D";
}
else
if (op5.isSelected()){
conf = "E";
}
if (lista.get(6).toString().equals(conf)){
nt = nt + 0.5;
}
int c=0;
do{
lista.remove(0);
c++;
}while(c<=6);
bt_next.setEnabled(true);
bt_confirma.setEnabled(false);
Não entendi, ele não deveria exibir as 6 primeiras posições, excluir as 6 primeiras, e tornar a exibir as próximas 6. Pra isso, utilizo outrto trecho de código, q está funcionando perfeitamente.
Espero ter sido claro.
Vlw.