首页 > 解决方案 > java.sql.Date错误如何避免呢?将日期插入我的数据库

问题描述

我想在我的数据库中插入“ID、Benutzername、Passwort、Name、Vorname、Geburtsdatum、IstWirt”,但这段代码有错误:

connect.UpdateUser(Integer.parseInt(textFieldId.getText()), 
    textFieldBenutzername.getText(),
    textFieldPasswort.getText(),
    textFieldName.getText(),
    textFieldVorname.getText(),
    new java.sql.Date (GeburtsdatumDate),
    IstWirtBoolean);

错误信息:

"the constructor Date(Date) in undefined"

我知道我需要在此请求中包含“java.sql.Date”,但我真的不知道如何避免错误。我已经尝试插入“textFieldGeburtsdatum.getText()”而不是“GeburtsdatumDate”,但没有成功。

boolean IstWirtBoolean;
if (textFieldWirt.getText() == "1") {
    IstWirtBoolean = true;
}
if (textFieldWirt.getText() == "0") {
    IstWirtBoolean = false;
}

Date GeburtsdatumDate = new SimpleDateFormat("dd/MM/yyyy").parse(textFieldGeburtsdatum.getText());
connect.UpdateUser(Integer.parseInt(textFieldId.getText()),textFieldBenutzername.getText(),textFieldPasswort.getText(),textFieldName.getText(),textFieldVorname.getText(),
        new java.sql.Date (GeburtsdatumDate),IstWirtBoolean);

数据库代码:

public void UpdateUser(int ID,String Benutzername, String Passwort, String Name,
    String Vorname, Date Geburtsdatum, Boolean IstWirt) throws SQLException { 
        try {
            String query = "Insert into user (ID,Benutzername,Passwort,Name,Vorname,Geburtsdatum,IstWirt) Values (?,?,?,?,?,?,?)";
            PreparedStatement stmt = con.prepareStatement(query);
            stmt.setInt(1, ID);
            stmt.setString(2, Benutzername);
            stmt.setString(3, Passwort);
            stmt.setString(4, Name);
            stmt.setString(5, Vorname);
            stmt.setDate(6, Geburtsdatum);
            stmt.setBoolean(7, IstWirt);
            stmt.executeUpdate();

        }
        catch(Exception e) {
            System.out.println(e);
        }

    }

编辑:

    Date GeburtsdatumDate = new SimpleDateFormat("dd/MM/yyyy").parse(textFieldGeburtsdatum.getText());


connect.UpdateUser(Integer.parseInt(textFieldId.getText()),textFieldBenutzername.getText(),textFieldPasswort.getText(),textFieldName.getText(),textFieldVorname.getText(),new java.util.Date (GeburtsdatumDate),IstWirtBoolean);

在这里我得到了同样的错误信息。

The method UpdateUser(int, String, String, String, String, Date, Boolean) in the type DBConnect is not applicable for the arguments (int, String, String, String, String, Date, boolean)
    The constructor Date(Date) is undefined

标签: javadatabasejdbc

解决方案


new java.sql.Date (GeburtsdatumDate)导致“构造函数Date(Date)未定义”

要么GeburtsdatumDate已经是 a java.sql.Date,在这种情况下你只需使用它,但很可能不是这种情况,所以它必须是其他类型的Date,可能是 a java.util.Date

要将 a 转换java.util.Date为 a java.sql.Date,请调用以下getTime()方法:

new java.sql.Date(GeburtsdatumDate.getTime())

推荐阅读