2010-08-26 23 views
57

Estoy trabajando en una aplicación web en la que los datos se transferirán entre el cliente & del lado del servidor.Cómo convertir entero a int?

Ya sé que JavaScript int! = Java int. Debido a que Java int no puede ser nulo, correcto. Ahora este es el problema que estoy enfrentando.

Cambié mis variables int de Java a Entero.

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 está aquí:

pstmt.setInt(1, tempID); 

pstmt.setInt(3, tage); 

no puedo utilizar las variables enteras aquí. Intenté con intgerObject.intValue(); Pero hace las cosas más complejas. ¿Tenemos algún otro método de conversión o técnicas de conversión?

Cualquier corrección sería mejor.

+2

que no entiendo.¿Está buscando algo más simple que 'pstmt.setInt (1, tempID.intValue())'? ¿Qué es más fácil que agregar 11 caracteres por valor de código? – EboMike

+1

Intente cambiar a Java 5 o posterior: la conversión se realizará automáticamente. –

+1

Estoy usando 1.5 ahora. –

Respuesta

58

Como ya se ha escrito en otra parte:

  • Para Java 1.5 y posterior que no es necesario hacer (casi) cualquier cosa, se hace por el compilador.
  • Para Java 1.4 y anteriores, use Integer.intValue() para convertir de Entero a int.

pero a medida que usted escribió, un Integer puede ser nulo, por lo que es aconsejable comprobar que antes de tratar de convertir a int (o el riesgo de contraer una NullPointerException).

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 defecto de cero, también podría hacer nada, mostrar una advertencia o ...

que en su mayoría no prefiero usar autoboxing (segunda línea de muestra) por lo que está claro lo que quiero hacer.

+1

Java 1.4.2 no tiene 'Integer.valueOf (int)' Consulte: http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Integer.html#valueOf(java. lang.String) –

12

Como dices que estás utilizando Java 5, puedes usar setInt con un Integer debido al autoenlace: pstmt.setInt(1, tempID) debería funcionar bien. En versiones anteriores de Java, habría tenido que llamar al .intValue() usted mismo.

Las obras opuestos, así ... la asignación de un int a un Integer hará que automáticamente el int que se autoboxed usando Integer.valueOf(int).

+1

Cómo cambiar este "Entero id = rs.getInt (1);" a entero. –

+1

@MaRaVaN Hace exactamente eso y funciona. – ColinD

+1

Hice hombre. Funcionó para setInt() y lo aprecio. Aquí, id es Integer y rs.getInt() devuelve una variable int. No funciona. –

4

Java convierte entero a int y viceversa automáticamente (a menos que usted todavía esté con Java 1.4).

+5

¿Qué sucede si un 'Entero 'es' nulo'? – SparkAndShine

+1

@sparkandshine - un poco tarde, pero bueno - 'null' debería causar' NullPointerException' –

4

Quizás tenga la configuración del compilador para su IDE configurado en modo Java 1.4 incluso si está utilizando un Java 5 JDK? De lo contrario, estoy de acuerdo con las otras personas que ya mencionaron el autoboxing/unboxing.

+1

Esto parece probable. – ColinD

3

Otra forma sencilla sería:

Integer i = new Integer("10"); 

if (i != null) 
    int ip = Integer.parseInt(i.toString());