gpt4 book ai didi

java - 在 PreparedStatement 中使用 setDate

转载 作者:行者123 更新时间:2023-11-29 08:47:54 25 4
gpt4 key购买 nike

为了使我们的代码更加标准,我们被要求更改所有将 SQL 变量硬编码为准备好的语句的地方,并改为绑定(bind)变量。

但是我遇到了 setDate() 的问题。

代码如下:

DateFormat dateFormatYMD = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
DateFormat dateFormatMDY = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
Date now = new Date();
String vDateYMD = dateFormatYMD.format(now);
String vDateMDY = dateFormatMDY.format(now);
String vDateMDYSQL = vDateMDY ;
java.sql.Date date = new java.sql.Date(0000-00-00);

requestSQL = "INSERT INTO CREDIT_REQ_TITLE_ORDER (REQUEST_ID," +
" ORDER_DT, FOLLOWUP_DT) " + "values(?,?,?,)";

prs = conn.prepareStatement(requestSQL);
prs.setInt(1,new Integer(requestID));
prs.setDate(2,date.valueOf(vDateMDYSQL));
prs.setDate(3,date.valueOf(sqlFollowupDT));

执行 SQL 时出现此错误:

java.lang.IllegalArgumentException
at java.sql.Date.valueOf(Date.java:138)
at com.cmsi.eValuate.TAF.TAFModuleMain.CallTAF(TAFModuleMain.java:1211)

我应该使用 setString() 而不是 to_date() 吗?

最佳答案

❐使用java.sql.Date

如果您的表中有一列类型为 DATE:

  • java.lang.String

    方法java.sql.Date.valueOf(java.lang.String)收到表示格式为 yyyy-[m]m-[d]d 的日期的字符串。例如:

    ps.setDate(2, java.sql.Date.valueOf("2013-09-04"));
  • java.util.Date

    假设您有一个类型为 java.util.Date 的变量 endDate,您可以这样进行转换:

    ps.setDate(2, new java.sql.Date(endDate.getTime());
  • 当前

    如果要插入当前日期:

    ps.setDate(2, new java.sql.Date(System.currentTimeMillis()));

    // Since Java 8
    ps.setDate(2, java.sql.Date.valueOf(java.time.LocalDate.now()));

❐使用java.sql.Timestamp

如果您的表中有一列类型为 TIMESTAMPDATETIME:

  • java.lang.String

    方法java.sql.Timestamp.valueOf(java.lang.String)收到表示格式为 yyyy-[m]m-[d]d hh:mm:ss[.f...] 的日期的字符串。例如:

    ps.setTimestamp(2, java.sql.Timestamp.valueOf("2013-09-04 13:30:00");
  • java.util.Date

    假设您有一个类型为 java.util.Date 的变量 endDate,您可以这样进行转换:

    ps.setTimestamp(2, new java.sql.Timestamp(endDate.getTime()));
  • 当前

    如果您需要当前时间戳:

    ps.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));

    // Since Java 8
    ps.setTimestamp(2, java.sql.Timestamp.from(java.time.Instant.now()));
    ps.setTimestamp(2, java.sql.Timestamp.valueOf(java.time.LocalDateTime.now()));

关于java - 在 PreparedStatement 中使用 setDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24198153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com