gpt4 book ai didi

java - SQL如何使用prepareStatement更新指定字段为int和double的IsNull?

转载 作者:太空宇宙 更新时间:2023-11-04 11:56:26 26 4
gpt4 key购买 nike

我想使用prepareStatement来更新表。但输入可能为空值。使用IsNull只能适用于varchar,那么int、double呢?

我将收到一个json对象(仅需要更新字段),例如:

{                             {
price: 1.56 OR name: "aa", OR ...
} age:10
}

对于int和double,如果没有设置值,当我获取值时,它会返回0,当用户没有传入我时,如何将其设置为null?

我的类(class):

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

我的问题:

如果字段(int/double)不可用,如何捕获 json 输入,然后将其设置为 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 等。您可以查看更多信息。这两种方法都可以使用包装类或在设置参数时进行比较。但最好进行比较。

关于java - SQL如何使用prepareStatement更新指定字段为int和double的IsNull?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41354628/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com