gpt4 book ai didi

java插入null但不是原始默认值

转载 作者:行者123 更新时间:2023-11-30 08:14:56 26 4
gpt4 key购买 nike

我想在数据库中插入一个空值,而不是插入默认的原始值。

我有课

class Test
(
private int first;
private int second;
public Test() {}
public void setFirst(int val) {first = val;}
public void setSecond(int val) {second = val;}
public int getFirst() {return first;}
public int getSecond() {return second;}
)

我有一些初始化测试类的代码:

测试 my = new Test();我的.setFirst(100);

所以我们现在有:第一个 = 100;第二 = 0; -- 因为我没有初始化它并且它默认为零“0”用于 int。

现在我将数据插入数据库表 Test ...

Create table Test
(
first number,
second number
)

Java 调用 ...

Test my = new Test();
my.setFirst(100);
String sql = "INSERT INTO TEST VALUES(?,?)";
PrepareStatement ps = connection.prepareStatement(sql);
ps.setInt(1, my.getFirst()); // will insert 100
ps.setInt(2, my.getSecond()); // will insert 0

我想将 NULL 插入“second”字段,因为我的代码中没有设置 Test.second。我使用以下技巧:

class Test
(
private int first = -999;
private int second = -999;
public Test() {}
public void setFirst(int val) {first = val;}
public void setSecond(int val) {second = val;}
public int getFirst() {return first;}
public int getSecond() {return second;}
)


Test my = new Test();
my.setFirst(100);
String sql = "INSERT INTO TEST VALUES(?,?)";
PrepareStatement ps = connection.prepareStatement(sql);

if (my.getFirst() == -999)
ps.setNull(1, java.sql.Types.INTEGER) // will insert NULL
else
ps.setInt(1, my.getFirst()); // will insert 100


if (my.getSecond() == -999)
ps.setNull(2, java.sql.Types.INTEGER) // will insert NULL
else
ps.setInt(2, my.getSecond()); // will insert 0

有人有最好/好的解决方案来实现它吗?

我在使用 Integer 时得到 NullPointerException,这是正确的,因为 var 没有初始化或者我在这里遗漏了一些东西:

java.lang.NullPointerException
at UserQuiz.getFrom_flags_challenge_nid(UserQuiz:113)

UserQuiz. java
...
private Integer from_flags_challenge_nid;
public int getFrom_flags_challenge_nid() {
return from_flags_challenge_nid;
}

public void setFrom_flags_challenge_nid(int from_flags_challenge_nid) {
this.from_flags_challenge_nid = from_flags_challenge_nid;
}
...

最佳答案

将您的 int 更改为 Integer(无处不在 - 字段、setter 的参数和 getter 的返回类型)然后您就可以试试这个:

ps.setObject(1, my.getFirst()/*may return null*/, java.sql.Types.INTEGER);
ps.setObject(2, my.getSecond()/*may return null*/, java.sql.Types.INTEGER);

注意这样的代码:

private Integer from_flags_challenge_nid;
public int getFrom_flags_challenge_nid() {
return from_flags_challenge_nid;
}

如果 from_flags_challenge_nid 包含 null,将抛出 NullPointerException。

关于java插入null但不是原始默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29221143/

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