如何将时间戳格式从java输入到同样具有格式时间戳的oracle数据库?

如何将时间戳格式从java输入到同样具有格式时间戳的oracle数据库?,java,sql,oracle,Java,Sql,Oracle,我在SQL Oracle数据库中有这个表 MESSAGES -------- Name Null? Type -------------- -------- -------------- ID_MESSAGE NOT NULL NUMBER(38) CONTENT NOT NULL NVARCHAR2(500) TIME_STAMP NOT NULL TIMESTAMP(6) 我试图在这个表中插入一个

我在SQL Oracle数据库中有这个表

MESSAGES
--------
Name           Null?    Type           
-------------- -------- -------------- 
ID_MESSAGE      NOT NULL NUMBER(38)     
CONTENT          NOT NULL NVARCHAR2(500) 
TIME_STAMP NOT NULL TIMESTAMP(6)  
我试图在这个表中插入一个数据,但在插入时间戳时遇到了问题

我已经用Java生成了一个时间戳,并执行了以下查询:

Timestamp Timestamp=新的时间戳(System.currentTimeMillis());
String query=“插入消息(内容、时间戳)值(“+textAreaSendMessage.getText()+”,“+timeStamp+”)”;
圣执行(查询);
我得到一个错误:

Caused by: java.sql.SQLSyntaxErrorException: ORA-00917: missing comma

如何修复此问题,以便将时间戳插入数据库?

我发现我甚至不必在java中创建时间戳,只需将当前时间戳添加到查询中时间戳应该位于的位置。

在定义表以调用捕获当前时刻的函数时,使用
默认值。每次插入新行时,此功能将自动运行。那么就不需要任何Java来实现这一目的了

如果您确实想在Java中执行类似的操作,请不要使用
Java.time.Timestamp
。该类在几年前被java.time类取代

OffsetDateTime odt = OffsetDateTime.now( ZoneOffset.UTC ) ;
使用
占位符构建SQL字符串。不要像在代码示例中看到的那样与字符串操作争论

使用
PreparedStatement
对象传递
OffsetDateTime
对象以填充
占位符

myPreparedStatement.setObject( … , odt ) ;

将参数与类型一起使用。不要咀嚼查询字符串。谢谢您的推荐。我将确保将代码中的所有语句都更改为这种格式,因为代码中的语句更清晰,并且我不必每次尝试将某个内容作为字符串插入时都搜索“字符”。