2016-11-12 8 views
0

date関数を使用してdate_nを更新したいのですが、いつも 'unclosed character literal'というエラーが表示されます。日付関数を使用してjdbcのDate_nを更新しています

try { 
    // TODO add your handling code here: 
    String radio = ""; 
    String date = f.format(jDateChooser1.getDate()); 
    if(jRadioButton1.isSelected()){ 
     radio ="Masculin"; 
    }else{ 
     if(jRadioButton2.isSelected()){ 
      radio ="Féminin"; 
     } 
    } 
    requete =" update humain set nom = '"+jTextField2.getText()+"',prenom='"+jTextField3.getText()+"',adresse ='"+jTextField4.getText()+"',date_n="'to_date('"+date+"','yyyy-mm-dd')"+"',sex = '"+radio+"'where id= '"+jTextField1.getText()+"'"; 
    state.executeUpdate(requete); 
    RefreshTable(); 
} catch (SQLException ex) { 
    Logger.getLogger(easy_methodes.class.getName()).log(Level.SEVERE, null, ex); 
} 

答えて

1

sql文字列連結のエラーやクロスサイトスクリプティングの問題を(hereを見て)避けるために、あなたはpreparedstatement.setString()setDate()などを使用する必要があります。..下図のように:

SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd"); 
java.sql.Date sqlDate = new java.sql.Date(jDateChooser1.getDate().getTime()); 

requete = "update humain set nom = ?, prenom=?, adresse=?, date_n=?, sex=? where id=?"; 
state = con.prepareStatement(requete); 
updateSales.setString(1, jTextField2.getText()); 
updateSales.setString(2, jTextField3.getText()); 
updateSales.setString(3, jTextField4.getText()); 
updateSales.setDate(4, sqlDate); 
updateSales.setString(5, radio); 
updateSales.setString(6, jTextField1.getText()); 
state.executeUpdate(requete); 
+0

私は日付Aで使用されますJdatechooserは、このjDateChooser1.setDateFormatString( "yyyy-MM-dd")のような形式( "yyyy-MM-dd")を追加します。 –

+0

jDateChooser1.getDate()からsqldateを取得するように更新された回答 – developer