如何将时间戳格式从java输入到同样具有格式时间戳的oracle数据库?
我在SQL 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) 我试图在这个表中插入一个
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 ) ;
将参数与类型一起使用。不要咀嚼查询字符串。谢谢您的推荐。我将确保将代码中的所有语句都更改为这种格式,因为代码中的语句更清晰,并且我不必每次尝试将某个内容作为字符串插入时都搜索“字符”。