If(rs.next()) - O mistério das trevas!

Dêem uma olhada no código abaixo. Está dando um erro inexplicável!
Quando eu mando incluir um usuário que inexiste no banco, ele me retorna a msg de que o usuário já existe! E o pior, ele não exibe a mensagem de usuário incluído com sucesso, porém, executa a instrução de INSERT, mesmo exibindo a mensagem de que o usuário já existe!

<%
//------------------------------------------
// Conectando-se ao banco de dados
//------------------------------------------
%>
<%@include file="Conexao.jsp"%>

<%
String nome = request.getParameter("nome").toUpperCase();
String matricula = request.getParameter("matricula").toUpperCase();
String mensagem = "";
try {
	Statement stm = conexao.createStatement();
	String querySelect = "select * from CAD_USU_DIST_PKGE where CD_IDFR_USU = '"+ matricula +"' fetch first 1 row only";
	out.println(querySelect);

	ResultSet rs = stm.executeQuery(querySelect);
	if (rs.next()){
		mensagem = "Usuário " + matricula + " já está cadastrado!";
	} else {
		String queryInsert = "insert into CAD_USU_DIST_PKGE (NM_USU, CD_IDFR_USU, CD_IDFR_SNH_ACSS, CD_IDFR_NVL_ACSS) values ('"+ nome +"', '"+ matricula + "', 123, 1) ";
		out.println(queryInsert);
		stm.executeUpdate(queryInsert);
		mensagem = "Usuário " + matricula + " incluído com sucesso!";
	}

	//------------------------
	// Fechando conexões 
	//------------------------
	stm.close();
	conexao.close();

}
catch(Exception e) {
	out.println("<p align='center'><font face='Verdana' size='2' color='red'>Ocorreu erro na inclusão de usuário:<br>" + e.toString());
}
%>	
<Script Language = 'JavaScript'>
	alert("<%=mensagem%>");
</Script>

EDIT (Thingol) Pus os tags [ code ] para você. Ponha sempre os tags [ code ] para melhorar a legibilidade de seu código e aumentar a chance de que alguém venha a se interessar pelo seu problema.

veio, dei uma olhada meio rapida no seu codigo, e pelo que eu vi o seu “if(rs.next())” é o responsável pela mensagem d jah cadastrado, sempre irá aparecer a mensagem ao executar esse codigo, pois sempre terá um proximo registro no banco de dados… o seu problema parece estar nesse if…para verificar c jah existe o usuário no banco de dados vc tera que fazer uma select pra verificar isso, esse if naum esta verificando se o usuario jah existe, esta apenas verificando se existem outros cadastros igual no banco…
putz…num sei c consegui ser claro…flw

1 - Use rpepared statements
2 - se você executar sua query de select diretamene no SGBD, ela retorna algo?

Shoes

Olá,

pelo que vc descreveu ele ta entrando no if e no else :shock: