0

到目前为止我试过

jdbcTemplate.update("INSERT INTO INFO (id, my_date) 
"VALUES(?, ?)", 1, "sysdate");

还通过仅使用地图尝试使用 namedParameterJdbcTemplate。

Map namedParameters = new HashMap();
namedParameters.put("id", 1);
namedParameters.put("my_date", "sysdate");

namedParameterJdbcTemplate.update("INSERT INTO INFO (id, my_date) 
    "VALUES(:id, :my_date)",namedParameters);

在尝试了以上所有之后,异常如下

org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [INSERT INTO INFO (id, my_date) 
"VALUES(?, ?)]; ORA-01858: a non-numeric character was found where a numeric was expected
; nested exception is java.sql.SQLDataException: ORA-01858: a non-numeric character was found where a numeric was expected

    at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:82) ~[spring-jdbc-4.3.17.RELEASE.jar:4.3.17.RELEASE]
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73) ~[spring-jdbc-4.3.17.RELEASE.jar:4.3.17.RELEASE]
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:82) ~[spring-jdbc-4.3.17.RELEASE.jar:4.3.17.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:655) ~[spring-jdbc-4.3.17.RELEASE.jar:4.3.17.RELEASE]

找到了这个链接,他们声称是可能的。我不明白怎么做,除非我做错了什么。有什么建议吗? http://forum.spring.io/forum/spring-projects/data/99020-is-it-possible-to-use-oracle-s-sysdate-with-simplejdbcinsert

4

2 回答 2

0

作为替代方案,您可以使用 Java 中可用的当前时间戳:

Timestamp sysdate = new Timestamp(System.currentTimeMillis());
Map namedParameters = new HashMap();
namedParameters.put("id", 1);
namedParameters.put("my_date", sysdate);
于 2018-07-11T13:17:29.190 回答
0

您的 Java 代码不知道是什么sysdate,它是 Oracle 数据库中的特定变量。与蒂姆的回答类似,我将在您的代码中指定一个java变量,尽管格式与您的第二次尝试类似:

Map<String, Object> namedParameters = new HashMap<String, Object>();
namedParameters.put("id", 1);
namedParameters.put("my_date", new Date());//java.util.Date

jdbcTemplate.update("INSERT INTO info (id, my_date) VALUES (:id, :my_date)", namedParameters);
于 2018-07-12T09:29:26.950 回答