正确初始化包装器Integer的方法

Jåc*_*cob 1 java integer

我在应用程序中有一个显示数字的下拉字段.

当用户没有从下拉列表中选择任何值时,我希望将数据库插入为null.

如何将Integer包装器类初始化为null?

我试过了

 Integer  days = new Integer(null);
        if (request.getParameter("days").equals("")) {
        } else {
            days  = 
                    Integer.parseInt(request.getParameter("days"));
        }
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误,那么声明Integer变量的正确方法是什么?

NumberFormatException at test.doPost(Controller.java:23);
Run Code Online (Sandbox Code Playgroud)

如何初始化Integer变量,以便在用户未选择任何值时,应插入null.

anu*_*ava 6

您应该使用null初始化:

    Integer  days = null;
    if (request.getParameter("days") != null && !request.getParameter("days").isEmpty()) {
        days = Integer.parseInt(request.getParameter("days"));
    }
Run Code Online (Sandbox Code Playgroud)

更新:最好先验证一个整数:

    Integer  days = null;
    if(request.getParameter("days")!=null && request.getParameter("days").matches("^\\d+$"))
    {
        days = Integer.parseInt(request.getParameter("days"));
    }
Run Code Online (Sandbox Code Playgroud)

更新2:为了能够在DB中插入null:

if (project.getDays() != null)
   callablestatement.setInt(2, project.getDays());
else 
   callablestatement.setNull(2, java.sql.Types.INTEGER);
Run Code Online (Sandbox Code Playgroud)