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.
As already written elsewhere:
Integer.intValue()
to convert from Integer to int.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.
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.