【发布时间】:2015-05-27 02:03:57
【问题描述】:
我想在数据库中插入一个空值,而不是插入默认的原始值。
我有课
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;}
)
我有一些初始化测试类的代码:
测试我的 = 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,因为我的代码中没有设置 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;
}
...
【问题讨论】:
-
你可以使用 Integer 代替 int,可能。
-
整数让我得到 NullPointerException
-
使用 Integer 时 NullPointerException 在哪里,在这种情况下您可以复制/粘贴堆栈跟踪吗?
-
它将在
ps.setInt上抛出异常。请参阅 stackoverflow.com/a/9542866/203117 了解类似问题的解释。