Estoy trabajando en una aplicación web en la que los datos se transferirán entre el cliente y el servidor.
Ya sé que JavaScript int! = Java int. Porque, Java int no puede ser nulo, correcto. Ahora bien, este es el problema al que me enfrento.
Cambié mis variables int de Java a 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();
}
Mi problema esta aqui:
pstmt.setInt(1, tempID);
pstmt.setInt(3, tage);
No puedo usar las variables Integer aquí. Probé con intgerObject.intValue();
Pero hace las cosas más complejas. ¿Tenemos otros métodos de conversión o técnicas de conversión?
Cualquier solución sería mejor.
pstmt.setInt(1, tempID.intValue())
? ¿Qué es más fácil que agregar 11 caracteres de código?Respuestas:
Como ya está escrito en otro lugar:
Integer.intValue()
para convertir de Integer a int.PERO como escribiste, an
Integer
puede ser nulo, por lo que es aconsejable comprobarlo antes de intentar convertir aint
(o arriesgarte a obtener aNullPointerException
).pstmt.setInt(1, (tempID != null ? tempID : 0)); // Java 1.5 or later
o
pstmt.setInt(1, (tempID != null ? tempID.intValue() : 0)); // any version, no autoboxing
* usando un valor predeterminado de cero, tampoco podría hacer nada, mostrar una advertencia o ...
En general, prefiero no usar autoboxing (segunda línea de muestra), por lo que está claro lo que quiero hacer.
fuente
Integer.valueOf(int)
Refer: docs.oracle.com/javase/1.4.2/docs/api/java/lang/…Ya que dice que está usando Java 5, puede usarlo
setInt
con unaInteger
función de desempaquetado automático:pstmt.setInt(1, tempID)
debería funcionar bien. En versiones anteriores de Java, habría tenido que llamarse a.intValue()
sí mismo.Lo contrario también funciona ... asignar un
int
a unInteger
automáticamente haráint
que se autoencuadre usandoInteger.valueOf(int)
.fuente
Java convierte Integer a int y viceversa automáticamente (a menos que todavía esté con Java 1.4).
fuente
Integer
esnull
?null
debería causar unNullPointerException
Otra forma sencilla sería:
Integer i = new Integer("10"); if (i != null) int ip = Integer.parseInt(i.toString());
fuente
¿Quizás tiene la configuración del compilador para su IDE configurada en el modo Java 1.4 incluso si está utilizando un JDK de Java 5? De lo contrario, estoy de acuerdo con las otras personas que ya mencionaron el autoboxing / unboxing.
fuente