簡體   English   中英

如何在JDBC PreparedStatement中設置公式

[英]How to set a formula in a JDBC PreparedStatement

我有一個PreparedStatement,我用它來插入一堆包含大量列數據的行。 但是,對於其中一個列(時間戳),如果值為null,我希望它在服務器上執行getDate()

我知道我可以做new Date()但這不會真正起作用,因為,由於遺留報告,它需要匹配另一個具有自動插入值的列。

我們還說我無法更改架構並為列添加默認值。

有沒有辦法可以在PreparedStatement中將公式設置為參數?

編輯添加:這里基本上是它當前的內容:

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

我想要的是,像:

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()");

我明白那個:

if(date == null)
  date = new Date();

基本上是相同的,但在我們的情況下,它真的不是。

簡單地准備表單聲明是否有效

insert into row(name, starttime)
   values(?, coalesce(?, getdate())

然后設置null第二個參數應該導致getdate()調用?

我能想到的唯一選擇,因為你無法改變模式,就是有2個預准備語句,一個在查詢中使用默認的getdate(),另一個在參數中使用。 然后你可以簡單地做一些事情:

PreparedStatement ps = (date == null) ? prepareWithDefault : prepareWithoutDefault;

// Set all variables //

if (date != null) {
  ps.setDate(date);
}

ps.execute();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM