这个问题在这里已有答案:
我想用Java程序在我的数据库中插入大量数据。我正在尝试管理String的值可能为空的事实,这样,我想将值设置为null。
这不起作用(pstm.setFloat...
):
PreparedStatement pstm;
try {
pstm = connex.prepareStatement("INSERT INTO opfofa._produit_val_nut VALUES (?,?,?,?,?,?,?,?,?,?)");
pstm.setInt(1,id);
pstm.setString(2,tabChaine[8]);
pstm.setFloat(3,tabChaine[9].isEmpty()? null:Float.valueOf(tabChaine[9]));
...
pstm.executeUpdate();
}catch(PSQLException e) {
System.out.println("already inserted : "+e);
}
错误:java.lang.NullPointerException,这是正常的,因为我们不能将float设置为null但是在PostgreSQL中我可以将Numeric列设置为null。
我怎样才能做到这一点?
代码看起来应该是这样的:
PreparedStatement pstm;
try {
pstm = connex.prepareStatement("INSERT INTO opfofa._produit_val_nut VALUES (?,?,?,?,?,?,?,?,?,?)");
pstm.setInt(1,id);
pstm.setString(2,tabChaine[8]);
if (tabChaine[9].isEmpty()) {
pstm.setNull(3, java.sql.Types.FLOAT);
}
else {
pstm.setFloat(3,Float.valueOf(tabChaine[9]));
}
...
pstm.executeUpdate();
}catch(PSQLException e) {
System.out.println("already inserted : "+e);
}
有关setNull()的更多信息
如果需要将参数设置为null,则必须使用setNull()