Before start of result set [RESOLVIDO]

Olá pessal do forum…

Gostaria de saber que erro é esse que retorna a messagem

[i]Before start of result set[/i]

Grato desde já

[quote=jonhzinhooo]Olá pessal do forum…

Gostaria de saber que erro é esse que retorna a messagem

[i]Before start of result set[/i]

Grato desde já[/quote]

Podes mostrar teu fonte do while, for… do loop?

O erro, claro, diz que o ponteiro está antes do primeiro registro.

O código é o método para a atualização da tabela Curso de uma universidade fictícia
Segue o código comentado abaixo:



			Connection con = Conexao.getConnection();//obtem a conexão
			
			/* Monta um vetor  com os cursos cadastrados*/

			String sql = "SELECT COUNT(*) AS TOTAL FROM curso";

			Statement st = (Statement) con.createStatement();

			ResultSet rs = (ResultSet) st.executeQuery(sql);

			int valor = 0;

			if (rs.next()) {//obtem o tamanho do vetor

				valor = rs.getInt("TOTAL");

			}

			String listaDeCursos[] = new String[valor];//declara esse vetor com o tamanho obtido

			int k = 0;

			sql = "SELECT * FROM curso";
			st = (Statement) con.createStatement();
			rs = (ResultSet) st.executeQuery(sql);

			while (rs.next()) {//coloca os cursos cadastrados no vetor

				listaDeCursos[k] = ((String) rs.getString("nome"));
				k++;

			}

			con.close();

			Arrays.sort(listaDeCursos);//Ordena o vetor em ordem alfabética
			
			//fim da montagem do vetor
			
			
			//Coloca o vetor no JOptionPane.showInputDialog
			Object opcao = JOptionPane.showInputDialog(null,
					"Selecione o curso", "Atualização de curso",
					JOptionPane.QUESTION_MESSAGE, null, listaDeCursos,
					listaDeCursos[0]);

			final String cursoSQL = opcao.toString();//Recebe a opção informada na caixa anterior, que será o curso atualizado

			// Itens do formulário de atualização

			JLabel nomeL, tipoL;

			final JComboBox tipoCB;

			final JTextField nomeTF;

			JButton cadastrar, limpar;

			JPanel panel;

			final JFrame frame;

			/*Lista para o JComboBox*/

			String[] listaTipo = { "GRADUAÇÃO", "MESTRADO", "DOUTORADO",
					"TECNÓLOGO" };

			nomeL = new JLabel("Nome");
			nomeL.setFont(new Font("Tahoma", Font.PLAIN, 11));
			nomeL.setBounds(10, 11, 27, 14);

			nomeTF = new JTextField(30);
			nomeTF.setBounds(47, 8, 214, 20);
			nomeTF.setText(cursoSQL);//Coloca o nome da JOPane no campo 'nome'

			tipoL = new JLabel("Tipo");
			tipoL.setFont(new Font("Tahoma", Font.PLAIN, 11));
			tipoL.setBounds(271, 11, 28, 14);

			sql = "select * from curso";

			sql += " where nome = " + '"' + cursoSQL + '"';

			con = Conexao.getConnection();

			st = (Statement) con.createStatement();

			rs = (ResultSet) st.executeQuery(sql);
			
			
			/**
			 * Aqui é que tá a parte do erro. O trecho abaixo faz o seguinte: como 
			 * é uma atualização, o JComboBox tem que ser carregado com o tipo
			 * do curso que está no banco (pode ser: GRADUAÇÃO, MESTRADO, DOUTORADO,TECNÓLOGO)
			 * A String aux_Tipo recebe justamente isso, o tipo do curso. Se a opção não for
			 * 'GRADUAÇÃO' (a n° 0 do vetor) ele deve percorrer o vetor de que guarda os
			 * tipos de cursos e mudar a posição dessa opção pra posição 0 do vetor, já
			 * que quando o JComboBox é carregado, ele aparece com a posição 0 do vetor que o compõe.
			 * Caso essa parte seja suprimida, o codigo funcionará certo (já fiz isso), mas tem um
			 * grave problema, quando o formulário de Atualização de curso é carregado, sempre será
			 * carregado com a opção "GRADUAÇÃO"; quando o curso é de "GRADUAÇÃO", não há problemas, mas
			 * qdo o curso for de um outro tipo??? O usuario que quer atulizar apenas o NOME do curso
			 * não está preocupado com o tipo (e nem deve, pois ele foi mudar o nome e não o tipo do curso)  	
			 * Sem esse trecho, toda vez que que ele apertar o botão atualizar (desencadeia a ação de UPDATE)
			 * o curso em questão será setado como "GRADUAÇÃO", o que é um erro.
			 * 
			 * Esse trecho do código que está lançando a exceção:
			 * >> Before start of result set <<
			 * */

			String auxTipo = rs.getString("tipo");//recebe o tipo do curso
			
			if (!auxTipo.equals("GRADUAÇÃO")) {/**Se a opção não for "GRADUAÇÃO", comuta no vetor a opção, 
												*com a opção 0 desse vetor;
												**/

				for (int i = 1; i < 4; i++) {

					if (listaDeCursos[i].equals(auxTipo)) {

						String aux = listaDeCursos[0];
						listaDeCursos[0] = listaDeCursos[i];
						listaDeCursos[i] = aux;
					}

				}

			}

			tipoCB = new JComboBox(listaTipo);
			tipoCB.setBounds(309, 8, 120, 20);

			panel = new JPanel();
			panel.setVisible(true);
			panel.setLayout(null);
			// ----------------------------------------------------------------------------

			// BOTÕES
			cadastrar = new JButton("Atualizar");
			cadastrar.setFont(new Font("Tahoma", Font.BOLD, 11));
			cadastrar.setBounds(107, 39, 89, 23);

			cadastrar.addActionListener(new ActionListener() {

				public void actionPerformed(ActionEvent arg0) {

					boolean validar = true;// controla a validação do formulário
					Curso novoCurso = new Curso();

					do {

						novoCurso
								.setNome(nomeTF.getText().toUpperCase().trim());
						novoCurso.setTipo((String) tipoCB.getSelectedItem());

						if ((novoCurso.getNome().equals(""))) {

							validar = false;

							JOptionPane
									.showMessageDialog(
											null,
											"            Impossível completar a atualização!!!"
													+ "\n Por favor informe no NOME do curso");

							return;

						} else {

							validar = true;
						}

					} while (!validar);

					Connection con = Conexao.getConnection();
					
					String sql = "update curso ";
					sql += "set nome = '" + novoCurso.getNome() + "', ";
					sql += "tipo = '" + novoCurso.getTipo() + "' ";
					sql += "where nome = " + '"' + cursoSQL + '"';
					
					
					try {

						Statement st = (Statement) con.createStatement();
						st.executeUpdate(sql);
						con.close();
						
						JOptionPane.showMessageDialog(null, "Atualização completada com sucesso!");

					} catch (SQLException e) {

						String messagem = e.getMessage();

						Erro erro = new Erro();

						erro.grava_ERRO(messagem);

						JOptionPane.showMessageDialog(null,
								"Não foi possível completar a atualização!");

					} catch (Exception e) {

						String messagem = e.getMessage();

						Erro erro = new Erro();

						erro.grava_ERRO(messagem);

						JOptionPane.showMessageDialog(null,
								"Não foi possível completar a atulização!");
					}

				}
			});

Espero que ajude

rs = (ResultSet) st.executeQuery(sql);  
if (!rs.next())  
    throw new SQLException("erro ao ler o tipo do curso: " + cursoSQL);  
String auxTipo = rs.getString("tipo");//recebe o tipo do curso