Erro - SQLException

8 respostas
N

Estou com um problema ao tentar tirar de uma base de dados MySQL os anos diasponiveis numa tabela com campo de data…

Sempre que tento criar um ResultSet, obtenho o erro:

java.sql.SQLException: Before start of result set

O meu código é o seguinte:

[i]public Vector getAnos() throws Exception {

String sql = SELECT YEAR(data_acidente) anos FROM acidente GROUP BY anos;

ResultSet rs = dbconnect.Query(sql);

Vector anos = new Vector();
while(rs.next()) {

anos.add(rs.getInt(1));

}

rs.getStatement().close();

return anos;

}[/i]

Agradeço uma ajuda nisto… :roll:

8 Respostas

J

O que faz esse método dbconnect.Query(sql) ??

N

public synchronized ResultSet Query(String sql)
throws ClassNotFoundException, SQLException{

createConnection();
    Statement stmt = ligacao.createStatement();
    ResultSet rs = stmt.executeQuery(sql);
    return rs;
}
cassio

nuno_duque:
Estou com um problema ao tentar tirar de uma base de dados MySQL os anos diasponiveis numa tabela com campo de data…

Sempre que tento criar um ResultSet, obtenho o erro:

java.sql.SQLException: Before start of result set

O meu código é o seguinte:

[i]public Vector getAnos() throws Exception {

String sql = SELECT YEAR(data_acidente) anos FROM acidente GROUP BY anos;

ResultSet rs = dbconnect.Query(sql);

Vector anos = new Vector();
while(rs.next()) {

anos.add(rs.getInt(1));

}

rs.getStatement().close();

return anos;

}[/i]

Agradeço uma ajuda nisto… :roll:

Acho que falta uma virgula ou um “as” logo apos SELECT YEAR(data_acidente)

Abraço!

N

Também já tinha exprimentado dessa forma… mas o erro mantém-se…
Alem disso se efectuar a Query em MySQL obtenho uma tabela com uma coluna chamada “anos” e que contem 2003, 2004 e 2005 nas três primeiras linhas respectivamente…

J

Coloque a pilha de erros aqui (printStackTrace) pra ajudar melhor.

Dieval_Guizelini

public synchronized ResultSet Query(String sql)
throws ClassNotFoundException, SQLException{

createConnection();

Statement stmt = ligacao.createStatement();

ResultSet rs = stmt.executeQuery(sql);

return rs;

}

Tente utilizar a classe PreparedStatement no lugar da classe Statement.

acho que o problema é que normalemnte se passa o sql para a construtora de statement.

Talvez ajude.

Dieval_Guizelini

Testei aqui é não é isso não… que objeto é este ligacao? como você o inicializa é no método createConnection? poe a declaração dele na classe e o método createConnection para a gente poder te ajudar.

Dieval_Guizelini

Uma idéia… eu uma vez peguei um conector do MySQL que não funcionava a classe PreparedStatement do java ai eu usei a do próprio conector…

com.mysql.jdbc.PreparedStatement

e você está utilizando qual classe?

Criado 31 de outubro de 2006
Ultima resposta 31 de out. de 2006
Respostas 8
Participantes 4