preparedStatement1.setInt(1,jsonObject1.getInteger("userid"));
数据库是mySQL。我在数据库中的userID字段是int类型,是一个可选字段。
如何从json轻松地将NULL传递给它?
{"userid":null}
让我犯了错误。
答案 0 :(得分:1)
将int字段设置为null的方式是使用setInt
而不是https://stackoverflow.com/a/8524199/1010777。 setInt
采用int
参数,因此它不能作为值接收null。
在您的情况下,您可以使用它来涵盖字段可能为空或不为空的情况:
Integer userId = jsonObject1.getInteger("userid");
if (userId==null) {
preparedStatement1.setNull(1, Types.INTEGER);
} else {
preparedStatement1.setInt(1, userId);
}
如果您愿意,可以编写辅助方法来更方便地执行此操作。
public static void setInteger(PreparedStatement stmt, int index, Integer value) {
if (value==null) {
stmt.setNull(index, Types.INTEGER);
} else {
stmt.setInt(index, value);
}
}
然后在上下文中,您的操作又回到了一行:
setInteger(preparedStatement1, 1, jsonObject1.getInteger("userid"));