Java 如何使用jDATECHOOSER设置日期格式dd/MM/yyyy

Java 如何使用jDATECHOOSER设置日期格式dd/MM/yyyy,java,mysql,date,jdatechooser,Java,Mysql,Date,Jdatechooser,我正试图在数据库(MySQL)dd/MM/yyyy中获取/设置以下日期格式 在数据库中,“Geburt”列被设置为日期,并且已经知道MySQL的标准格式是yyyy/MM/dd 此外,我还使用jDateChooser来选择、插入和更新数据 现在看起来是这样的: private void wiwTextFocusLost(java.awt.event.FocusEvent evt) { String userId = wi

我正试图在数据库(MySQL)dd/MM/yyyy中获取/设置以下日期格式

在数据库中,“Geburt”列被设置为日期,并且已经知道MySQL的标准格式是yyyy/MM/dd

此外,我还使用jDateChooser来选择、插入和更新数据

现在看起来是这样的:

 private void wiwTextFocusLost(java.awt.event.FocusEvent evt) {                                  
    String userId = wiwText.getText();

    try {
        String sql = "SELECT * FROM TBL_TEILNEHMER WHERE WIW= ?";
        S**tring dateValue = rs.getString("Geburt"); // What ever column
        java.util.Date date = new SimpleDateFormat("dd-MM-yyyy").parse(dateValue);** //I added this here from a example I saw here
        pst = conn.prepareStatement(sql);
        pst.setString(1,userId);
        rs = pst.executeQuery();

        if(rs.next()) {
            nameText.setText(rs.getString("Name"));
            vornameText.setText(rs.getString("Vorname"));
            geburtChooser.setDate(date);
            mailText.setText(rs.getString("Mail"));
            telText.setText(rs.getString("Telefon"));
            reText.setText(rs.getString("re"));
            dcText.setText(rs.getString("dc"));
            emeaText.setText(rs.getString("emea"));
            assetText.setText(rs.getString("assetid"));
            modellCombo.setSelectedItem(rs.getString("Model"));
            herstellerText.setText(rs.getString("hersteller"));
            strasseText.setText(rs.getString("strasse"));
            nummerText.setText(rs.getString("nummers"));
            stadtText.setText(rs.getString("stadt"));
            privatnummerText.setText(rs.getString("privatnummer"));
            privatmailText.setText(rs.getString("privatmail"));
            handyText.setText(rs.getString("handy"));
            whatsCombo.setSelectedItem(rs.getString("whats"));
            skypeText.setText(rs.getString("skype"));
            rs = pst.executeQuery();

        }else{
        rs.close();
        pst.close();
        }
    } catch (SQLException e) {
        JOptionPane.showMessageDialog(null, e.getMessage());
    } catch (ParseException ex) {
        Logger.getLogger(Benutzer.class.getName()).log(Level.SEVERE, null, ex);
    }
} 
我试图在这里和巴西的StackOverFlow上找到我的答案,但没有找到

使用此方法,我试图更新进入select的数据。 这两种方法都不管用

 private void bearbeitenActionPerformed(java.awt.event.ActionEvent evt) {                                           
    try{
        String sql = "UPDATE TBL_TEILNEHMER SET NAME=?, VORNAME=?, GEBURT=?, MAIL=?, TELEFON=?, RE=?, DC=?, EMEA=?, ASSETID=?, MODEL=?, HERSTELLER=?, "
                + "STRASSE=?, NUMMERS=?, STADT=?, PRIVATNUMMER=?, PRIVATMAIL=?, HANDY=?, WHATS=?, SKYPE=? WHERE WIW='"+wiwText.getText()+"'";
        pst = conn.prepareStatement(sql);
        pst.setString(1, nameText.getText());
        pst.setString(2, vornameText.getText());
        pst.setString(3, geburtChooser.getDate().toString());
        pst.setString(4, mailText.getText());
        pst.setString(5, telText.getText());
        pst.setString(6, reText.getText());
        pst.setString(7, dcText.getText());
        pst.setString(8, emeaText.getText());
        pst.setString(9, assetText.getText());
        pst.setString(10, modellCombo.getSelectedItem().toString());
        pst.setString(11, herstellerText.getText());
        pst.setString(12, strasseText.getText());
        pst.setString(13, nummerText.getText());
        pst.setString(14, stadtText.getText());
        pst.setString(15, privatnummerText.getText());
        pst.setString(16, privatmailText.getText());
        pst.setString(17, handyText.getText());
        pst.setString(18, whatsCombo.getSelectedItem().toString());
        pst.setString(19, skypeText.getText());
        pst.executeUpdate();

        JOptionPane.showMessageDialog(null, "Benutzerdaten wurden bearbeitet.");
    }catch(SQLException e){
        JOptionPane.showMessageDialog(null, e.getMessage());
    }
}                      
有人能帮我吗

我的问题是基本上我无法将MySQL的格式转换为datechooser的格式,尽管我已经将datechooser中的格式更改为yyyy.MM.dd

我做错了什么事。我尝试了很多方法,但都没有效果。 还尝试更改MySQL中的日期格式。。。一无所获

谢谢大家!

我找到了解决办法

pst.setString(4,((JTextField)geburtChooser.getDateEditor().getUiComponent()).getText());

现在它工作了

请参见SimpleDataFormat(),不要更改选择器中的日期格式-这应该是特定于用户区域设置的格式。而是将日期转换为您期望的格式,然后在数据库上设置该格式。同样,在显示日期时,将日期转换回特定的区域设置。
String dateString=new SimpleDateFormat(“dd/MM/yyyy”).format(dateObj);pst.setString(3,日期字符串)
。。举个例子。几乎100%肯定这个问题是重复的等等,为什么要在执行查询之前获取日期?您不需要数据库中的日期格式-它在数据库中不保存为字符串,如果您在JDBC调用中正确使用
setDate()
getDate()
,则不需要处理该格式。@realponsum是的,这一点不清楚-这里的错误不仅仅是处理日期的方式。其中一个“Gebert”应该是日期,但它被设置为字符串。如果我不得不盲目猜测错误,那就是进入数据库的格式与出来的格式不同。。。是的,通过正确的JDBC调用可以避免这种头痛:\