Java Servlet中日期为的准备语句错误

Java Servlet中日期为的准备语句错误,java,jdbc,prepared-statement,Java,Jdbc,Prepared Statement,我试图通过在servlet中使用以下代码在从3个下拉框DD MM YYYY获取的MySQL表中插入日期,但准备好的语句显示错误 int bday1=Integer.parseInt(req.getParameter("bday")); int bmonth1=Integer.parseInt(req.getParameter("bmonth")); int byear1=Integer.parseInt(req.getParameter("byear")); SimpleDateFormat d

我试图通过在servlet中使用以下代码在从3个下拉框DD MM YYYY获取的MySQL表中插入日期,但准备好的语句显示错误

int bday1=Integer.parseInt(req.getParameter("bday"));
int bmonth1=Integer.parseInt(req.getParameter("bmonth"));
int byear1=Integer.parseInt(req.getParameter("byear"));
SimpleDateFormat dtformat= new SimpleDateFormat("yyyy-MM-dd");
String date1=Integer.toString(bday1)+"-"+Integer.toString(bmonth1)+"-"+Integer.toString(byear1);
java.util.Date dt = dtformat.parse(date1); 
System.out.println(date1);
ps.setDate(5,dt);
最后一行显示错误

int bday1=Integer.parseInt(req.getParameter("bday"));
int bmonth1=Integer.parseInt(req.getParameter("bmonth"));
int byear1=Integer.parseInt(req.getParameter("byear"));
SimpleDateFormat dtformat= new SimpleDateFormat("yyyy-MM-dd");
String date1=Integer.toString(bday1)+"-"+Integer.toString(bmonth1)+"-"+Integer.toString(byear1);
java.util.Date dt = dtformat.parse(date1); 
System.out.println(date1);
ps.setDate(5,dt);
找不到适用于setDate的方法(int、java.util.Date) 方法java.sql.PreparedStatement.setDate(int,java.sql.Date,java.util.Calendar) 不适用 (实际参数列表和正式参数列表长度不同) 方法java.sql.PreparedStatement.setDate(int,java.sql.Date)不适用 (实际参数java.util.Date无法通过方法调用转换转换为java.sql.Date)

在我犯错误的地方,需要帮助

setDate(int、java.sql.Date、java.util.Calendar)不适用(实际参数列表和形式参数列表长度不同)

无法通过方法调用转换将java.util.Date转换为java.sql.Date)

SQL日期与JAVA Util日期不同。在将JAVA日期设置为PreparedStatement之前,应该将其转换为SQL日期


而不是
ps.setDate(5,dt)
您应该执行
ps.setDate(5,新的java.sql.Date(dt.getTime())

我已经按照您在这里提到的那样做了,它是`java.sql.Date dt=new java.sql.Date(dtformat.parse(date1.getTime());但现在输入日期为20-12-1992,存储在MySQL中为0021-03-02。我的HTML代码是1992。这个问题是由于这个原因。在将日期放入数据库之前,您应该以正确的格式解析日期,即
yyy-MM-dd
。如果需要,您可以在从数据库检索后将其格式化为任何所需格式,如
dd-MM-yyyy
等。