Problemas ao resgatar dado do banco [RESOLVIDO]

Estou com um problema em um dos métodos do software que estou desenvolvendo para o TCC do meu curso.
Coloquei vários trechos de impressão a fim de saber em qual linha de código o erro era apresentado
Segue abaixo o código:

public int getFuncao(String func) { int codFunc = 0; String a = func; try { System.out.println(a); Connection con = Conexao.getConexao(); System.out.println("conectou"); Statement sta = con.createStatement(); System.out.println("Statement"); ResultSet rss = sta.executeQuery("select CodFunc from funcoes where NomeFunc ='"+a+"'"); System.out.println("RSS"); codFunc = rss.getInt(1); System.out.println(codFunc); con.close(); sta.close(); rss.close(); return codFunc; } catch(SQLException e) { System.out.println("Erro ao conectar com o banco"+e); } return codFunc; }

Todas as impressões são exibidas até chegarem na linha 14 (RSS).
Logo após é exibido o erro contido no meu catch ("Erro ao conectar com o bancojava.sql.SQLException: BEfore start of result set)
Gostaria de saber qual o problema, porque não consigo pegar o valor inteiro da consulta e atribuir a variavel codFunc, já que a mesma consulta diretamente pelo mysql retorna o valor como esperado.

pq o proprio erro diz:

O problema não está na sua query, mas sim no sua conexao com o banco de dados
Posta como vc faz a conexao com banco

O problema não é na conexão. Está tudo certo, só faltou percorrer o resultset.

Faça isso:

while(rss.next()){ codFunc = rss.getInt(1); }

P.S.: isso é uma das saídas possíveis.

Evite usar o Statement, pois ele é alvo de SQL injection. Para este e na maioria dos casos utilize o PreparedStatement.

http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

[quote=lucasportela]Evite usar o Statement, pois ele é alvo de SQL injection. Para este e na maioria dos casos utilize o PreparedStatement.

http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html[/quote]

Sim, utilize prepared. Além de ser melhor, você verá que o sql ficará muito mais organizado e facil de programar/interpretar. não precisa ficar fazendo esse jogo de chaves.

:wink:

Valeu mesmo galera funcionou com o rss.next();
Eu achava que utilizava ele apenas quando o resultado da query fosse maior do que apenas 1 campo, e vou usar os tópicos passados ai pra trocar pra PreparedStatement.
Valeu mesmo :thumbup: