javainteger

How to convert Integer to int?


I am working on a web application in which data will be transfer between client & server side.

I already know that JavaScript int != Java int. Because, Java int cannot be null, right. Now this is the problem I am facing.

I changed my Java int variables into Integer.

public void aouEmployee(Employee employee) throws SQLException, ClassNotFoundException
{
   Integer tempID = employee.getId();
   String tname = employee.getName();
   Integer tage = employee.getAge();
   String tdept = employee.getDept();
   PreparedStatement pstmt;
   Class.forName("com.mysql.jdbc.Driver");
   String url ="jdbc:mysql://localhost:3306/general";
   java.sql.Connection con = DriverManager.getConnection(url,"root", "1234");
   System.out.println("URL: " + url);
   System.out.println("Connection: " + con);
   pstmt = (PreparedStatement) con.prepareStatement("REPLACE INTO PERSON SET ID=?, NAME=?, AGE=?, DEPT=?");
   pstmt.setInt(1, tempID);
   pstmt.setString(2, tname);
   pstmt.setInt(3, tage);
   pstmt.setString(4, tdept);
   pstmt.executeUpdate();
 }

My problem is here:

pstmt.setInt(1, tempID);

pstmt.setInt(3, tage);

I cant use the Integer variables here. I tried with intgerObject.intValue(); But it makes things more complex. Do we have any other conversion methods or conversion techniques?

Any fix would be better.


Solution

  • As already written elsewhere:

    BUT as you wrote, an Integer can be null, so it's wise to check that before trying to convert to int (or risk getting a NullPointerException).

    pstmt.setInt(1, (tempID != null ? tempID : 0));  // Java 1.5 or later
    

    or

    pstmt.setInt(1, (tempID != null ? tempID.intValue() : 0));  // any version, no autoboxing  
    

    * using a default of zero, could also do nothing, show a warning or ...

    I mostly prefer not using autoboxing (second sample line) so it's clear what I want to do.

    PreparedStatement

    The question is showing the use of PreparedStatement. in this case, its setObject() method can be used instead of setInt(). It will do the appropriate conversion and accept an Integer, even it being null.

    Another alternative, the setNull() method, but that requires first testing the value for null and passing the column type as second argument.