2017-09-22 13 views
-3

私の質問は正しいが、「あなたはSQLの構文に誤りがあります.MySQLサーバのバージョンに対応したマニュアルをチェックしてください。 group = 'aaa'とDate_de_naissanse ......... "1行目。 私は構文をチェックしました。私は2つのバージョンで同じことをしましたが、同じメッセージです。ここに私のコードは次のとおりです。javaの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)の予約語です。あなたが挿入ステートメントのようにバッククォートに名前を入れてみてください。 –

+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'のようなテーブル名を避けてください。 –