[code] public ResultSet ExibirChamadoGrupo(int sg_id) throws SQLException
{
PreparedStatement ps = null;
Connection con = null;
ConexaoBanco Banco = new ConexaoBanco();
ResultSet chamado_grupo = null;;
try {
con = Banco.getConexao();
ps=con.prepareStatement("select cha_id, cha_data, cat_id, cha_desc from chamado where sg_id =?");
ps.setInt(1,sg_id);
chamado_grupo = ps.executeQuery();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
} catch (SQLException ex) {
ex.printStackTrace();
}
return chamado_grupo;
}
[/code]
Realmente estou quebrando bastante a cabeça com isso… o erro que retorna é informando que o " rs_grupo" está nulo, porem o sql está correto retorna valor
Não tenho como testar nada agora, mas acredito que desse jeito funcione…
No método, linha 14 (chamado_grupo = ps.executeQuery(); ) está um erro.
Você deveria passar o comando sql nesse executeQuery, que está retornando null devido à isso.
Outra coisa, não use prepareSatement nesse caso.
Retire as linhas 4 e 5 do método, e entre as linhas 7 e 8 coloque:
A chamada a executeQuery está correta. Ana, dê uma olhada na API ok?
O erro tem uma causa um tanto sutil.
Repare a forma que você implementou seu método. Dentro dele vc cria sua conexão certo? E retorna um ResultSet que está AMARRADO a conexão criada. Quando seu método termina, os objetos criados dentro dele são destruídos (olha o escopo!) menos o que é representado pela referência retornada (que no caso é o ResultSet). É ai que está o problema. Sua conexão sendo destruída, ele é fechada automaticamente, e como seu ResultSet é amarrado a conexão, esse “para” de funcionar entendeu? O ResultSet depende da conexão. Se ela é fechada, adeus ResultSet.
O que eu aconselho:
[list]No seu método, ao invés de retornar um ResultSet, retorne um ArrayList com os dados da consulta, ou[/list]
[list]Dê uma olhada na API beanutils do projeto commons da apache, lá existe um “ResultSet” que fica “independente” da conexão (RowSetDynaClass).[/list]
Você pode também melhorar sua camada de acesso a banco utilizando o padrão DAO por exemplo. Dê uma olhada na apostila de desenvolvimento web da Caelum, lá tem um exemplo básico.
Desculpe então suprman, eu realmente não havia notado
que a sua conexão estava sendo destruída.
Irei sim dar uma olhada com atenção na API, porém possuo métodos que retornam ArrayList que usam a executeQuery() passando já o comando sql e funcionam normalmente.
Obrigada pela dica, vou estudar isso.