[英]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.