如何在NULL [duplicate]上setFloat PreparedStatement(jdbc)的值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在NULL [duplicate]上setFloat PreparedStatement(jdbc)的值相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我想用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。
我怎样才能做到这一点?
setFloat
投掷NullPointerException
,因为它期望原始float
而不是Float
对象。您可以尝试使用setObject
方法 - 如果需要,它允许使用null
值。就像是:
pstm.setObject(3, tabChaine[9].isEmpty() ? null : Float.valueOf(tabChaine[9]), java.sql.Types.FLOAT);
代码看起来应该是这样的:
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()
以上是关于如何在NULL [duplicate]上setFloat PreparedStatement(jdbc)的值的主要内容,如果未能解决你的问题,请参考以下文章
如何在java中的内存中表示null [duplicate]
fcntl(sockfd, F_SETFL, fcntl(sockfd, F_GETFD, 0)O_NONBLOCK) == -1)
std::cout 一个 null char* 指针如何中止程序? [复制]
在 null 上调用了方法“timeZone”。 (颤振)[重复]
Futtler 错误在 null 上调用了方法“toDouble”。接收方:null 尝试调用:toDouble() [重复]