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