从java插入到timestamp oracle列中

时间:2014-12-01 11:54:00

标签: java oracle jdbc

我有一张以这种方式制作的桌子

CREATE TABLE WS_NAPACQ00T
( IDE_IDEN varchar2(20) PRIMARY KEY NOT NULL,
  CLB_CXML CLOB,
  SYS_DATE TIMESTAMP
);

这个java代码放在dt_date当前日期。

Timestamp dt_date = new Timestamp(System.currentTimeMillis());
String insertXML = "insert into WS_NAPACQ00T (IDE_IDEN, CLB_CXML, SYS_DATE) values ('10', 'test', '"+dt_date+"' ) ";
result = statement.executeQuery(insertXML);

错误是:

"not a valid month"

我该如何解决?

1 个答案:

答案 0 :(得分:4)

请勿使用Statement导致SQLInjection,而是使用PreparedStatement,如下所示。

String insertXML = "insert into WS_NAPACQ00T (IDE_IDEN, CLB_CXML, SYS_DATE) values (?, ?, ?) ";
PreparedStatement statement = connection.prepareStatement(insertXML);
statement.setString(1,"10");
statement.setString(2,"test");
statement.setTimestamp(3, new Timestamp(System.currentTimeMillis()));
result = statement.executeQuery();

无关。

如果要插入当前时间戳,可以使用CURRENT_TIMESTAMPSELECT CURRENT_TIMESTAMP from DUAL;将提供当前时间戳。