2017-09-22 5 views
-3

내 쿼리가 정확하지만 "SQL 구문에 오류가 있습니다. MySql 서버 버전에 해당하는 설명서를 확인하십시오. group = 'aaa'및 Date_de_naissanse ......... "1 번 줄에서. 나는 두 가지 버전에서 구문을 확인했지만 여전히 같은 메시지를 보냈다.자바에서 Mysql 구문 오류가 발생했습니다

if (rdps==true){ 
    con = connection.connect(); 
    String sql ="SELECT * FROM eleve_ps WHERE Nom_et_prenom=? and Group=? and Date_de_naissanse=? and Responsable=? and CIN=? and Telephone=? and Adresse=?"; 

     try{ 

     st=con.prepareStatement(sql); 
     st.setString(1, txtnp.getText()); 
     st.setString(2, txtg.getText()); 
     st.setInt(6, Integer.parseInt(txtt.getText())); 
     st.setString(4, txtr.getText()); 
     st.setString(5, txtc.getText()); 
     st.setDate(3, date); 
     st.setString(7, txta.getText()); 
     rs=st.executeQuery(); 
     if(rs.next()){ 
      JOptionPane.showMessageDialog(null,"VOTRE COURRIER DEJA EXISTE"); 
     }else{ 
      String insert = "INSERT INTO `eleve_ms`(`ID`, `Nom_et_prenom`, `Group`, `Date_de_naissanse`, `Responsable`, `CIN`, `Telephone`, `Adresse`) VALUES (Null,'"+txtnp.getText()+"','"+txtg.getText()+"','"+date+"','"+txtr.getText()+"','"+txtc.getText()+"','"+Integer.parseInt(txtt.getText())+"','"+txta.getText()+"')"; 
      try{ 
       st=con.prepareStatement(insert); 
       st.executeUpdate(); 
       this.setVisible(false); 
      } 
      catch(Exception e){ 
       JOptionPane.showMessageDialog(null,e); 
      } 
     } 

     } 
     catch(Exception e){ 
      JOptionPane.showMessageDialog(null,e); 
     } 
     rdms=false; 
    } 

을 그래서이 버전입니다 : 여기 내 코드는

if (rdps==true){ 
     con = connection.connect(); 
     String sql ="SELECT * FROM eleve_ps WHERE Nom_et_prenom='"+txtnp.getText()+"' and Group='"+txtg.getText()+"' and Date_de_naissanse='"+date+"' and Responsable='"+txtr.getText()+"' and CIN='"+txtc.getText()+"' and Telephone='"+Integer.parseInt(txtt.getText())+"' and Adresse='"+txta.getText()+"' "; 
     try{  
     st=con.prepareStatement(sql); 
     rs=st.executeQuery(); 
     if(rs.next()){ 
      JOptionPane.showMessageDialog(null,"VOTRE COURRIER DEJA EXISTE"); 
     }else{ 
      String insert = "INSERT INTO `eleve_ps`(`ID`, `Nom_et_prenom`, `Group`, `Date_de_naissanse`, `Responsable`, `CIN`, `Telephone`, `Adresse`) VALUES (Null,'"+txtnp.getText()+"','"+txtg.getText()+"','"+date+"','"+txtr.getText()+"','"+txtc.getText()+"','"+Integer.parseInt(txtt.getText())+"','"+txta.getText()+"')"; 
      try{ 
       st=con.prepareStatement(insert); 
       st.executeUpdate(); 
       this.setVisible(false); 
      } 
      catch(Exception e){ 
       JOptionPane.showMessageDialog(null,e); 
      } 
     } 

     } 
     catch(Exception e){ 
      JOptionPane.showMessageDialog(null,e); 
     } 

    } 
+5

그룹은 SQL 구문 (Group By)의 예약어입니다. insert 문에서했던 것처럼 백틱에 이름을 넣으십시오. –

+0

당신은 'eleve_ms'가 아닌 'eleve_ms'가 필요합니다. – Subhiksh

+0

동일한 원시 데이터를 다음 쿼리에 바로 붙여 넣을 경우 준비된 문을 사용해야하는 이유는 무엇입니까? – Ivar

답변

0

이 댓글에서 언급 한 바와 같이 : GROUP는 예약어이며, MySQL은 대소 문자를 구분됩니다.

단어 Group을 둘러싼 역마차에주의하십시오.

String sql ="SELECT * FROM eleve_ps WHERE Nom_et_prenom=? and `Group`=? and Date_de_naissanse=? and Responsable=? and CIN=? and Telephone=? and Adresse=?"; 
+1

그리고'GROUP','SELECT','WHERE' 등과 같은 테이블 이름은 피하려고 노력한다. –