Pegar proximo registro bd

Olá pessoal! :smiley:

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(int i=0;i<50;i++)
	{

	Statement stmt2 = consultacli.con.createStatement();
	ResultSet rs2 = stmt2.executeQuery ("SELECT * FROM DISCIPLINAS where Serie= '" + Serie +"' " );

	if (rs2.next())
	{
	disciplina[i]=rs2.getString("disciplina");

	}

	}
	}
	catch (Exception e)
	{
	System.err.println ("Erro no comando SQL de Consulta " + e);
	}

Já tentei usar: SELECT * FROM DISCIPLINAS where Serie= ‘" + Serie +"’ and cod= " +i+"

Também não consegui.

=)

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 }

Tenta usar while no lugar de if, assim ele percorre todo o resultado da consulta,

assim:

[code]while (rs2.next()) {

} [/code]

Edit:

^^ renamed foi mais rápido no click :stuck_out_tongue:

iaheuiahe rpz, vcs são rápidos demais… rsrsrs
valeu msmo.

Não consegui pegar os resultados.
O código ficou assim:

   	try
	{

	Statement stmt2 = consultacli.con.createStatement();
	ResultSet rs2 = stmt2.executeQuery ("SELECT * FROM DISCIPLINAS where Serie= '" + Serie +"' " );

	while (rs2.next())
	{
	int i=1;
	disciplina[i]=rs2.getString("disciplina");
	i++;

	}


	}
	catch (Exception e)
	{
	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.

O problema é que vc esta iniciando a variavel i dentro do while a cada iteração , põe o

int i = 1;

Fora do while que vai da certo , ok ?

[quote=camillopaes]iaheuiahe rpz, vcs são rápidos demais… rsrsrs
valeu msmo.

Não consegui pegar os resultados.
O código ficou assim:

   	try
	{

	Statement stmt2 = consultacli.con.createStatement();
	ResultSet rs2 = stmt2.executeQuery ("SELECT * FROM DISCIPLINAS where Serie= '" + Serie +"' " );

	while (rs2.next())
	{
	int i=1;
	disciplina[i]=rs2.getString("disciplina");
	i++;

	}


	}
	catch (Exception e)
	{
	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.[/quote]

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

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 +"' " );

while (rs2.next())
{

disciplina[j]=rs2.getString("disciplina");
JOptionPane.showMessageDialog(null, disciplina[j]);
j++;

}



}
catch (Exception e)
{
System.err.println ("Erro no comando SQL de Consulta " + e);
}

A primeira atribuição do contador deveria ficar fora do loop “while”.