Tô desenvolvendo uma aplicação desktop, usando banco de dados access.
Eu tenho uma tabela chamada Disciplinas e nessa tabela eu tenho as colunas cod, série, disciplina, professor.
Na hora de efetuar a matrícula do aluno eu preciso pegar as disciplinas referente a série que ele está sendo matrículado. Até aí tudo bem.
Tenho a seguinte instrução, mas não consigo pegar o próximo registro.
try{for(inti=0;i<50;i++){Statementstmt2=consultacli.con.createStatement();ResultSetrs2=stmt2.executeQuery("SELECT * FROM DISCIPLINAS where Serie= '"+Serie+"' ");if(rs2.next()){disciplina[i]=rs2.getString("disciplina");}}}catch(Exceptione){System.err.println("Erro no comando SQL de Consulta "+e);}
Já tentei usar: SELECT * FROM DISCIPLINAS where Serie= ‘" + Serie +"’ and cod= " +i+"
Isso porque você faz a mesma consulta i vezes, só é necessário rodar a consulta uma vez… tire o executeQuery e o Statement de dentro do for e faça um while com o seguinte:
while (rs2.next()){
//seu código aqui
}
NightDark
Tenta usar while no lugar de if, assim ele percorre todo o resultado da consulta,
assim:
while(rs2.next()){
}
Edit:
^^ renamed foi mais rápido no click :P
C
camillopaes
iaheuiahe rpz, vcs são rápidos demais… rsrsrs
valeu msmo.
Não consegui pegar os resultados.
O código ficou assim:
try{Statementstmt2=consultacli.con.createStatement();ResultSetrs2=stmt2.executeQuery("SELECT * FROM DISCIPLINAS where Serie= '"+Serie+"' ");while(rs2.next()){inti=1;disciplina[i]=rs2.getString("disciplina");i++;}}catch(Exceptione){System.err.println("Erro no comando SQL de Consulta "+e);}}
No BD eu tenho agora, 5 registros. e ele só está me mostrando o ultimo.
ccefetpb
O problema é que vc esta iniciando a variavel i dentro do while a cada iteração , põe o
inti=1;
Fora do while que vai da certo , ok ?
L
Lucas_Emanuel
camillopaes:
iaheuiahe rpz, vcs são rápidos demais… rsrsrs
valeu msmo.
Não consegui pegar os resultados.
O código ficou assim:
try{Statementstmt2=consultacli.con.createStatement();ResultSetrs2=stmt2.executeQuery("SELECT * FROM DISCIPLINAS where Serie= '"+Serie+"' ");while(rs2.next()){inti=1;disciplina[i]=rs2.getString("disciplina");i++;}}catch(Exceptione){System.err.println("Erro no comando SQL de Consulta "+e);}}
No BD eu tenho agora, 5 registros. e ele só está me mostrando o ultimo.
Amigo. Se voce está usando o i para indicar a posição de armazenamento no vetor, tem que criar a variavel i fora do laço, senao toda vez ele vai ficar com posição 1. E outra, o i tem que começar com 0, pois a contagem da posição começa no zero.
Abraço
C
camillopaes
IEUHE Agora consegui... valeu msmo...
thaaaaaaankss!
Precisando é só gritar.
O código ficou assim:
[code]
try
{
Statement stmt2 = consultacli.con.createStatement();
ResultSet rs2 = stmt2.executeQuery ("SELECT * FROM DISCIPLINAS where Serie= '" + Serie +"' " );