如何在 JDBC PreparedStatement 中设置公式

Rev*_*nzo 4 java sql jdbc prepared-statement

我有一个 PreparedStatement,用于插入一堆包含大量列数据的行。但是,对于其中一列(时间戳),如果值为空,我希望它getDate()在服务器上执行。

我知道我可以这样做,new Date()但这不会真正起作用,因为由于旧报告,它需要与自动插入值的另一列完全匹配。

假设我无法更改架构并向列添加默认值。

有什么方法可以将公式设置为 PreparedStatement 中的参数?

编辑添加:这基本上是目前的情况:

PreparedStatement statement = connection.prepareStatement("insert into row (name, starttime) values (?, ?)")
statement.setString(1, name);
statement.setDate(2, date);
Run Code Online (Sandbox Code Playgroud)

我想要的是,类似于:

PreparedStatement statement = connection.prepareStatement("insert into row (name, starttime) values (?, ?)")
statement.setString(1, name);
if(date != null)
  statement.setDate(2, date);
else
  statement.setFormula(2, "getdate()");
Run Code Online (Sandbox Code Playgroud)

我明白那个:

if(date == null)
  date = new Date();
Run Code Online (Sandbox Code Playgroud)

本质上是一样的,但在我们的例子中,它真的不是。

ara*_*nid 5

简单地准备一份表格声明是否有效

insert into row(name, starttime)
   values(?, coalesce(?, getdate())
Run Code Online (Sandbox Code Playgroud)

? 然后设置一个空的第二个参数应该导致一个 getdate() 调用?