【问题标题】:Prepared statement error with date in ServletServlet中带有日期的准备好的语句错误
【发布时间】:2016-02-22 14:34:05
【问题描述】:

我正在尝试通过在 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);

最后一行显示错误

没有找到适合 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)

我做错了,需要帮助

【问题讨论】:

    标签: java jdbc prepared-statement


    【解决方案1】:

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

    java.util.Date不能通过方法调用转换为java.sql.Date)

    SQL Date 与 JAVA Util Date 不同。您应该先将 JAVA 日期转换为 SQL 日期,然后再将其设置为 PreparedStatement。

    您应该使用ps.setDate(5,new java.sql.Date(dt.getTime())); 而不是ps.setDate(5,dt);

    【讨论】:

    • 我已经完成了你在这里提到的它是`java.sql.Date dt = new java.sql.Date(dtformat.parse(date1).getTime());但现在,日期输入为 20-12-1992,存储在 MySQL 中为 0021-03-02。那么我的 HTML 代码是
    • 您应该以正确的格式解析日期,即yyyy-MM-dd,然后再将其放入数据库。如果需要,您可以在从数据库中检索它后将其格式化为任何所需的格式,例如 dd-MM-yyyy 等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-18
    • 2012-07-08
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多