Como é que crio mensagem de erro neste caso?

15 respostas
Sonkinha
String NUd=request.getParameter("NUj");
String Pd=request.getParameter("Pj");


st = conn.createStatement();                     
xt = "Insert into tabela (NU, P) values ('"+NUd+"', '"+Pd+"');";
     out.println("Inserido com sucesso!!");
     st.executeUpdate(xt);
     conn.close();}

Como é que crio uma mensagem de erro quando já existe na tabela um valor igual ao que é para ser inserido no campo "NU"?

15 Respostas

R

Que tal começar ‘limpando’ esse código?
Use PreparedStatement em vez de Statement.

Bruno_Ferreira1

O Campo NU é chave primária ou Unique no banco?
Utilize uma SQL Exception

Sonkinha

Bruno Ferreira:
O Campo NU é chave primária ou Unique no banco?
Utilize uma SQL Exception

Não é primária nem única. Tenho uma chave pimária na tabela mas é o ID.
Não postei aqui porque não achei necessário.

Bruno_Ferreira1
Sonkinha:
Bruno Ferreira:
O Campo NU é chave primária ou Unique no banco? Utilize uma SQL Exception
Não é primária nem única. Tenho uma chave pimária na tabela mas é o ID. Não postei aqui porque não achei necessário.

Caso fosse chave primária ou Unique ja daria uma Exception SQL e você poderia tratar o erro com uma mensagem
neste caso você pode fazer uma consulta no banco utlizando o operador Like, e criar uma função Booleana pra ver se ele existe ou não

String NUd=request.getParameter("NUj");  
 String Pd=request.getParameter("Pj");  

public boolean verificaRegistro(){
   String query="SELECT * FROM tabela WHERE NU like'"+nud+"'" ;
   ResultSet rs=st.executeQuery(query);
   if(rs.next())
      JOptionPane.showMessageDialog(null, "Este registro ja existe!");
      return false;   
   else
      return true;
}
   
if(verificaRegistro()){
      st = conn.createStatement();                       
      xt = "Insert into tabela (NU, P) values ('"+NUd+"', '"+Pd+"');";  
      out.println("Inserido com sucesso!!");  
      st.executeUpdate(xt);  
      conn.close();
}

*Me corrijam se eu estiver falando besteira

Mephy

Tirando o if com mais de um comando sem chaves, e o uso desnecessário do escopo público, esse código do Bruno tá correto ‘-’

Bruno_Ferreira1
Mephy:
Tirando o if com mais de um comando sem chaves, e o uso desnecessário do escopo público, esse código do Bruno tá correto '-'
então corrigindo o if (o public não fara diferença neste caso):
String NUd=request.getParameter("NUj");    
   String Pd=request.getParameter("Pj");    
     
   public boolean verificaRegistro(){  
      String query="SELECT * FROM tabela WHERE NU like'"+nud+"'" ;  
      ResultSet rs=st.executeQuery(query);  
      if(rs.next()) { 
         JOptionPane.showMessageDialog(null, "Este registro ja existe!");  
         return false;   
      }  
      else  
         return true;  
   }  
        
   if(verificaRegistro()){  
         st = conn.createStatement();                         
         xt = "Insert into tabela (NU, P) values ('"+NUd+"', '"+Pd+"');";    
         out.println("Inserido com sucesso!!");    
         st.executeUpdate(xt);    
         conn.close();  
   }
Sonkinha
Bruno Ferreira:
Mephy:
Tirando o if com mais de um comando sem chaves, e o uso desnecessário do escopo público, esse código do Bruno tá correto '-'
então corrigindo o if (o public não fara diferença neste caso):
String NUd=request.getParameter("NUj");    
   String Pd=request.getParameter("Pj");    
     
   public boolean verificaRegistro(){  
      String query="SELECT * FROM tabela WHERE NU like'"+nud+"'" ;  
      ResultSet rs=st.executeQuery(query);  
      if(rs.next()) { 
         JOptionPane.showMessageDialog(null, "Este registro ja existe!");  
         return false;   
      }  
      else  
         return true;  
   }  
        
   if(verificaRegistro()){  
         st = conn.createStatement();                         
         xt = "Insert into tabela (NU, P) values ('"+NUd+"', '"+Pd+"');";    
         out.println("Inserido com sucesso!!");    
         st.executeUpdate(xt);    
         conn.close();  
   }

Esse public boolean não está a dar cara.
Eu percebo a lógica de seu código mas nunca usei um public boolean.
Tá dizendo "illegal start of expression" e faz como que apareça muitos erros no código seguinte

Bruno_Ferreira1

o problema não esta no public ou na assinatura do método.
Da uma olhada nas chaves, se estão todas abrindo e fechando corretamente
ou se for outro erro, coloque o mouse onde esta sublinhado e diga qual o erro

Sonkinha
Bruno Ferreira:
o problema não esta no public ou na assinatura do método. Da uma olhada nas chaves, se estão todas abrindo e fechando corretamente ou se for outro erro, coloque o mouse onde esta sublinhado e diga qual o erro
Eu coloquei meu mouse onde esta sublinhado e apareceu "illegal start of expression" Cara vou colocar meu código verdadeiro aqui para você ver. Não o coloquei antes porque não achei necessário e não queria que meu professor descubra que o postei :mrgreen: Quando meu problema se resolver vou apaga-lo. Meu código é esse:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.sql.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
  <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body background="images/fundo11.png" bgproperties="fixed">
      <center>
        <%
            String NomeUtilizadord=request.getParameter("NomeUtilizador");
            String Passd=request.getParameter("Pass");
            String Emaild=request.getParameter("Email");
            String PrimeiroNomed=request.getParameter("PrimeiroNome");
            String UltimoNomed=request.getParameter("UltimoNome");
            String Idaded=request.getParameter("Idade");
            String Moradad=request.getParameter("Morada");
            String Localidaded=request.getParameter("Localidade");
            String CodigoPostald=request.getParameter("CodigoPostal");
            String NumeroTelemoveld=request.getParameter("NumeroTelemovel");

            java.sql.Connection conn = null;

            String url = "jdbc:mysql://localhost:3306/coiso";
            String user = "root";
            String password = "778779";
            Statement st;
            String xt;

    public boolean verificaRegistro(){
    String query="SELECT * FROM registodeclientes WHERE NomeUtilizador like'"+NomeUtilizadord+"'" ;
    ResultSet rs=st.executeQuery(query);
    if(rs.next()) {
       JOptionPane.showMessageDialog(null, "Este registro ja existe!");
     return false;
  }
   else
         return true;
  }

    if(verificaRegistro()){
     st = conn.createStatement();
     xt = "Insert into registodeclientes (NomeUtilizador, Pass, Email, PrimeiroNome, UltimoNome, Idade, Morada, Localidade, CodigoPostal, NumeroTelemovel) values ('"+NomeUtilizador+"', '"+Pass+"', '"+Email+"', '"+PrimeiroNome+"', '"+UltimoNome+"', '"+Idade+"', '"+Morada+"', '"+Localidade+"', '"+CodigoPostal+"', '"+NumeroTelemovel+"');";
     out.println("Inserido com sucesso!!");
     st.executeUpdate(xt);
     conn.close();
   }

            
%>
      </center>
      </body>
</html>
Não vejo onde tá o raio do erro. O problema só pode vir do public boolean. Ele faiz com que o resto do código a partir dele dê todo erro.
ferreira2006

:slight_smile: ele só quer que vc coloque private no método … rs

Bruno_Ferreira1

Então cara, nunca utilizei servlet, apesar de ter outro problema:

java.sql.Connection conn = null;  
  
            String url = "jdbc:mysql://localhost:3306/coiso";  
            String user = "root";  
            String password = "778779";  
            Statement st;  
            String xt;  
  
    public boolean verificaRegistro(){  
    String query="SELECT * FROM registodeclientes WHERE NomeUtilizador like'"+NomeUtilizadord+"'" ;  
    ResultSet rs=st.executeQuery(query);  
    if(rs.next()) {  
       JOptionPane.showMessageDialog(null, "Este registro ja existe!");  
     return false;  
  }  
   else  
         return true;  
  }

na linha 1 e na linha 6, o objeto Conection e o Statement estão nulos. e onde esta a conexão? tem as Strings URL, User e Password, mas aonde
é criada a conexão?

não sei como funciona no servlet, ja que não tem uma classe explícita ai, pois seria instanciando uma classe e chamando
o método verificaRegistro() que funcionaria o que eu te indiquei, neste caso eu não posso te ajudar

Sonkinha

A conexão está boa! Tenho outras páginas que usam o mesmo tipo de código e resultam.
A conexão também é feita a partir desta linha de código que está aqui: <%@page import="java.sql.*"%>
Talvés tenho de arranjar outro método para resolver o meu problema, já que não se deve ter 2 usuários como mesmo nick name. E se não achar como resolver o problema só posso rezar para que meu professor não o encontre :cry:

Bruno_Ferreira1

Sonkinha:
A conexão está boa! Tenho outras páginas que usam o mesmo tipo de código e resultam.
A conexão também é feita a partir desta linha de código que está aqui: <%@page import="java.sql.*"%>
Talvés tenho de arranjar outro método para resolver o meu problema, já que não se deve ter 2 usuários como mesmo nick name. E se não achar como resolver o problema só posso rezar para que meu professor não o encontre :cry:

Mas que medo é esse do professor encontrar seu tópico? :shock:
Você esta aqui tirando uma dúvida. Ou seu professor disse que é proibido tirar duvidas ou participar de fóruns?
é assim que a gente aprende :slight_smile:

Sonkinha

Bruno Ferreira:
Sonkinha:
A conexão está boa! Tenho outras páginas que usam o mesmo tipo de código e resultam.
A conexão também é feita a partir desta linha de código que está aqui: <%@page import="java.sql.*"%>
Talvés tenho de arranjar outro método para resolver o meu problema, já que não se deve ter 2 usuários como mesmo nick name. E se não achar como resolver o problema só posso rezar para que meu professor não o encontre :cry:

Mas que medo é esse do professor encontrar seu tópico? :shock:
Você esta aqui tirando uma dúvida. Ou seu professor disse que é proibido tirar duvidas ou participar de fóruns?
é assim que a gente aprende :slight_smile:


Huahauhauahua não é isso! O que quero dizer é espero que meu professor não encontre o problema do meu projecto. Problema que estou tentando resolver aqui com você. :mrgreen:
Assim mesmo isto ta uma besteira. Tenho o campo de “NomeUtilizador” como unique key no meu sql e ele me aparece como null quando introduzo no campo, um nome que já existe. :hunf:

Bruno_Ferreira1

Então, como ja falei, não conheço o funcionamento de servlets, não posso te ajudar, não sei nem Swing ainda! :slight_smile:
Aguarde que talvez alguem mais experiente venha ajudar

Criado 4 de abril de 2011
Ultima resposta 5 de abr. de 2011
Respostas 15
Participantes 5