Como verificar se um ResultSet retorno algum resultado?

4 respostas
F

Estou tendo prolemas em cadastrar uma categoria no MySQL.
Naum sei como verificar se já existe a categoria…

Estou tentando o seguinte:

String categoria = request.getParameter(categoria);

if(categoria!=null){

Class.forName(“org.gjt.mm.mysql.Driver”);

Connection conexao = DriverManager.getConnection(“jdbc:mysql://localhost/classificados);
String pesquisa = null;

ResultSet resultado = null;

Statement declaracao = null;
pesquisa = “SELECT * FROM categorias WHERE desc_categoria=’”+categoria+"";

resultado = declaracao.executeQuery(pesquisa);

if(resultado.getFetchSize()==0){

String desc_categoria = request.getParameter(“categoria”);

PreparedStatement declPreparada = null;
Statement stm = conexao.createStatement();
String addcat = "INSERT INTO categorias (desc_categoria) VALUES (?)";

declPreparada = conexao.prepareStatement(addcat);
declPreparada.setString(1, categoria);
declPreparada.executeUpdate();

out.print("<SCRIPT> alert ('Categoria "+categoria+" cadastrada!') </SCRIPT>");
}
else
	out.print("<SCRIPT> alert ('A Categoria "+categoria+", já existe!') </SCRIPT>");

}

Está dando erro interno e java.lang.NullPointerException…

Qual a melhor forma de verificar se ja existe um certo dado no banco e se não existir, cadastra-lo??

ajuda ai galera!!!
Valeu

4 Respostas

B

O que costuma ser feito para verificar se um select retornou registros em um RecordSet é simplesmente dar um recordSet.next(). Se voltar true existe a primeira linha, e portanto o select retornou alguma coisa.

F

Bani, não é querer abusa da boa vontade, mais oque presisaria mudar no meu código pra verificar se o recordSet é true ou false?

B
pesquisa = “SELECT * FROM categorias WHERE desc_categoria=’”+categoria+"";

resultado = declaracao.executeQuery(pesquisa);

if(!resultado.next()){

…

Como você pode ver, no caso !resultado.next() significaria que não teve resultados.

B

Apesar de que o seu erro não é no teste do RecordSet, e sim em utilizar o Statement sem antes inicializá-lo.

Você deve colocar
declaracao = conexao.createStatement();
antes de tentar executar o declaracao.executeQuery(), pois deve ser aí que está dando NullPointerException

Criado 12 de novembro de 2002
Ultima resposta 12 de nov. de 2002
Respostas 4
Participantes 2