我正在开发一个Web应用程序,在该应用程序中,数据将在客户端和客户端之间传输。服务器端。
我已经知道JavaScript int!= Java int。因为,Java int不能为null,对吧。 现在这是我面临的问题。
我将Java int变量更改为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();
}
我的问题在这里:
pstmt.setInt(1, tempID);
pstmt.setInt(3, tage);
我不能在这里使用Integer变量。我试过intgerObject.intValue();
但它使事情变得更加复杂。我们还有其他转换方法或转换技术吗?
任何修复都会更好。
答案 0 :(得分:67)
正如其他地方所写:
Integer.intValue()
将Integer转换为int。 但是在你写的时候,Integer
可以为空,所以在尝试转换为int
之前检查一下(或冒险获得NullPointerException
)是明智的。
pstmt.setInt(1, (tempID != null ? tempID : 0)); // Java 1.5 or later
或
pstmt.setInt(1, (tempID != null ? tempID.intValue() : 0)); // any version, no autoboxing
* 使用默认值零,也可以什么都不做,显示警告或......
我大多不喜欢不使用自动装箱(第二个样品线),所以我很清楚我想做什么。
答案 1 :(得分:13)
由于您说您正在使用Java 5,因此可以使用setInt
Integer
因为自动装箱:pstmt.setInt(1, tempID)
应该可以正常使用。在早期版本的Java中,您必须自己调用.intValue()
。
反之亦然......将int
分配给Integer
会自动导致int
使用Integer.valueOf(int)
进行自动装箱。
答案 2 :(得分:8)
Java将Integer转换为int并自动返回(除非您仍然使用Java 1.4)。
答案 3 :(得分:4)
即使您使用的是Java 5 JDK,也许您将IDE的编译器设置设置为Java 1.4模式?否则,我同意已经提到过自动装箱/拆箱的其他人。
答案 4 :(得分:4)
另一种简单的方法是:
Integer i = new Integer("10");
if (i != null)
int ip = Integer.parseInt(i.toString());