2016-07-27 2 views
1

Mes clés primaires sont empid et date. ce que je veux faire, c'est qu'un employé insère un serveur de valeurs sur sql et s'il essaie à nouveau d'insérer des valeurs dans la base de données le même jour, la clé primaire devrait être en conflit. donc je veux afficher une erreur s'il/elle essaie de faire comme çacomment puis-je récupérer des messages d'erreur à mon programmeur java à partir de sqlserver

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
      String g = jComboBox1.getSelectedItem().toString(); 
      if(g.equals("--Select Your Employee ID--")) 
      { 
      jLabel6.setForeground(Color.RED); 
      jLabel6.setText("Please Select Your ID "); 
      } 
      else{ 
       jLabel6.setText(""); 
      } 
      String a =jTextArea1.getText(); 
      if(a.equals("")){ 
       jLabel7.setForeground(Color.RED); 
      jLabel7.setText("Please Fill the Report "); 
      } 
      else{ 
       jLabel7.setText(""); 
      } 
       try{ 
      String url="jdbc:sqlserver://localhost:1433;databaseName=gym2 "; 
       String username = "mali"; 
       String password = "12345"; 
       Connection con =DriverManager.getConnection(url,username,password); 
       Statement st = con.createStatement(); 
       ResultSet rs; 
         Calendar cal = Calendar.getInstance(); 
        SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd"); 
     String sql = "INSERT INTO report(empid,dat,rep) VALUES('"+g+"','"+format1.format(cal.getTime())+"','"+a+"')" ; 
     rs= st.executeQuery(sql); 
     jComboBox1.addItem("--Select Your Employee ID--"); 

      } 
      catch(Exception e){ 

      } 

Répondre

0

J'irais sur ce en ajoutant une contrainte unique sur la colonne de date dat dans votre base de données. Ensuite, SQL Server doit rejeter toute insertion contenant la même date car il s'agira d'une violation de contrainte.

Idéalement, le pilote SQL Server JDBC lève une exception dans ce cas. Si oui, alors vous pouvez modifier votre try-catch clause de regarder quelque chose comme ceci:

try { 
    // attempt the INSERT 
} 
catch (SQLIntegrityConstraintViolationException e) { 
    System.out.println("date has already been entered"); 
} 
catch (SQLException e) { 
    // handle other SQL exceptions here 
} 
catch (Exception e) { 
    // handle generic exceptions here 
} 
+0

puis-je obtenir un lable ?? ne fonctionne pas –

+0

Je ne comprends pas votre commentaire. –

+0

son ne fonctionne pas je veux obtenir le résultat à un jlable dans le jframe –

0

amicalement: Faites une sélection de l'enregistrement et vérifier si l'enregistrement existe. Dites que l'enregistrement utilisateur existe déjà.

Puisqu'il s'agit d'une clé primaire, les doublons viendront à l'encontre de la contrainte et l'erreur sera levée et l'exception sera transmise à l'application.