Como verificar se registro já existe no BD?

Olá amigos.
Estou elaborando um projeto e gostaria da ajuda de vcs.

Já verifiquei no fórum mas não consegui achar um que resolvesse meu problema.
Quando o usuário clicar em cadastrar, o sistema tem que ir verificar no bd se o registro já existe… caso já exista emitir uma menssagem de matrícula já cadastrada (por exemplo)… e se não gravar o registro no bd!
Segue o código abaixo :

package controle;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import modelo.DAOTurma;
import modelo.Turma;

public class ControleTurma extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

	String comando = req.getParameter("comando");
	
	String cod = req.getParameter("cod");
	String nome = req.getParameter("nome");
	String numAlunos = req.getParameter("numAlunos");
	
	if (comando.equals("Cadastrar")){
		
		try {
			
			ResultSet r;
			Turma t = new Turma();
			t.setNome(nome);
			t.setCod(cod);
			t.setNumAlunos(numAlunos);
			
			DAOTurma dt = new DAOTurma();
			
			dt.cadastrar(t);
				
			PrintWriter pw = res.getWriter();
			pw.write("<html><head><script type'text/javascript'>function janela(){alert('Cadastro Realizado com sucesso!!');document.load('visao/telaMenu.html');}</script></head><body onload='janela()'></body></html>");
				
		}
			
			catch (Exception e){
			
			PrintWriter pw = res.getWriter();
			pw.write("<html><head><script type'text/javascript'>function janela(){alert('Deu zebra!!');document.load('visao/telaMenu.html');}</script></head><body onload='janela()'></body></html>");
			
			
		}
		
	}
	
	
	if (comando.equals("Excluir")){
	
		try {
			
			Turma t = new Turma ();
			
			t.setCod(cod);
			
			DAOTurma dt = new DAOTurma();
			dt.excluir(t);
		}
		
		catch (Exception e){
			
		}
	}

	
	if (comando.equals("Sair")){
		
		RequestDispatcher rd = req.getRequestDispatcher("/visao/telaMenu.html");
		rd.forward(req, res);
		
	}

}


public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
	
}   	  	    

}

Gostaria que se possível… deixassem o código para que eu possa colocar no projeto.
Desde já muito obrigado pela ajuda e pela atenção!
Valeu galera!!

André Felipe

vc pode colocar o campo como PK no catch ao inves de e.printStackTrace() cloca throw new RuntimeException(“Sua mensagem”);

Porque vc na faz um select, passando o parametro q vc quer verificar se existe.
Se retornar algo, é pq existe, ai é so mostrar para o usuario.
Se nao retornar nada é pq nao esta cadastrado.
No cadatrar, vc vai ter primeiro q fazer um select e depois se nao existir o insert.

Ex:
select * from funcionario
where id = ?

se existe
insert into …

caso contrario
retorna o funcionario p/ o usuario.

Foi isso q consegui entender de seu problema e seria uma possivel solução!

Olá amigos.

Muito obrigado pela ajuda de vcs ae galera!!!

To tentando seguir a sua dica Gustavo, mas surgiu uma nova dúvida aqui.

Aluno a = new Aluno();
a.setMat(mat);
a.setTel(tel);
a.setNome(nome);
a.setDt(dt);
DAOAluno da = new DAOAluno();
da.consultar (a);

Eu criei o objeto… setei o banco com os dados que foram coletados…

meu método consultar da classe DAO é o seguinte:

public Aluno consultar (Aluno a){

	try {
		sql = c.prepareStatement("select * from aluno where mat = ?");
		
		r=sql.executeQuery();
		
		if (r.next()){
			
			a.setNome(r.getString("nome"));
			a.setTel (r.getString("tel"));
			a.setDt(r.getString("dt"));
			return a;
			
		}
		
	}
		
	catch (Exception e){
		
	}
	return null;
}

Gostaria de saber se consigo fazer isso que vc falou utilizando esse método ae!

Valeu pela ajuda pessoaaaaalllll!!!

Amigão avsouza … não entendi muito bem sua dica… .se puder me ajudar denovo ae… agradeço muito!!

Abração a todos
André Felipe

O que quis dizer é o seguinte:
Na sua tabela o campo “matricula” seria sua chave primaria(PK)

no seu metodo de insercao vc cria

try {
...
} catch (Exception e) {
		throw new RuntimeException("mensagem");
}

pois o banco não deixará vc inserir uma PK igual.
Entendeu?

Olá amigão…
Agora entendi sim… mas coloquei o código e continua dando o mesmo problema…

if (comando.equals (“Cadastrar”)){
try {
Aluno a = new Aluno();
a.setMat(mat);
a.setTel(tel);
a.setNome(nome);
a.setDt(dt);
DAOAluno da = new DAOAluno();
da.consultar (a);

		 da.cadastrar (a);
		
		 PrintWriter pw = res.getWriter();
		 pw.write("<html><head><script type'text/javascript'>function janela(){alert('Cadastro Realizado com sucesso!!');document.load('visao/telaMenu.html');}</script></head><body onload='janela()'></body></html>");
		
					
		}
		catch (Exception e) {
			 throw new RuntimeException("Erro!!!!"); 

}

	 }

Se tiver algo errado ae por favor me diga aqui…

vc esta utilizando swing? se sim basta agora colocar no um joptionpane nostrando a mensagem.
se for web vc pode criar uma pagina para mostrar o erro p.e

Andre posta suas classes que fazem a conexao com o banco e a q faz a pesquisa, para ficar melhor para analisar-mos seu problema!

Seria algo mais ou menos assim:

Funcionario funcionario = new Funcionario();

try
   Statement stm = conDB.createStatemente();
   ResultSet rs = stm.excuteQuery("select * from funcionario where id = '''+idFunci+'");

   if (rs.next()){  /** se encontrar algum resultado nesta busca entra no if */

      funcionario.setNome(rs.getString(1));
      funcionario.setEndereco(rs.getString(2));
      /** dentro deste bloco vc retorna o funcionario para o usuario */

    }else { /** Se nao encontrar nenhum resultado na sua busca entra neste else */
       System.out.println("Funcionario nao existe.");
        /** faz-se o insert dentro deste bloco */
    }
}catch(SqlException c){
 e.printStakTrace();
}

Andre pelo q entendi do seu problema, usando sql acho q esta seria a forma mais facil de resolver seu problema!
Existe grande possibilidade de existir erros de digitação pois digitei aqui na caixa de texto do guj mesmo.
Espero ter te ajudado