[英]SQL how to use prepareStatement update specify fields with IsNull for int and double?
我想使用prepareStatement來更新表。 但輸入可能是空值。 通過使用IsNull,它只能應用於varchar,int,double怎么樣?
我將收到一個json對象(只需要更新字段),例如:
{ {
price: 1.56 OR name: "aa", OR ...
} age:10
}
對於int和double,如果沒有設置值,當我得到值時,它將返回0,當用戶沒有傳入給我時,如何將其設置為null?
我的課 :
private String name;
private int age;
private double price;
//public get & set method
我的java:
strQuery = "UPDATE table SET name=IsNull(?, name), age=IsNull(?, age), price=IsNull(?, age) WHERE id= ?";
stmt = (PreparedStatement) conn.prepareStatement(strQuery);
stmt.setString(1, obj.getName()); //string
stmt.setString(2, obj.getAge()); //int
stmt.setString(3, obj.getPrice()); //double
stmt.setString(4, id);
我的問題:
如何捕獲json輸入,如果字段(int / double)不可用,則將其設置為null?
我嘗試使用Double而不是double,這是有效的,但我不確定這是不是好方法。 (我是一個完整的新手)
或任何其他最好的方式去做我想做的事情?
您可以在設置參數時比較對象
stmt.setInt(2, obj.getAge() != 0 ? obj.getAge() : null);
stmt.setDouble(3, obj.getPrice() != 0 ? obj.getPrice() : null);
現在,正如您所說的使用Double一樣,因為在初始化期間類對象默認被指定為null。 但是,原始類型會被賦予默認值。 例如,int-0,double-0.0,bool-false等。您可以查看更多信息。 這兩種方法都可以在設置參數時使用包裝類或比較。 但是比較好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.