2010-08-26 7 views
57

Je travaille sur une application web dans laquelle les données seront transférées entre le client & côté serveur.Comment convertir un entier en int?

Je sais déjà que JavaScript int! = Java int. Parce que, Java int ne peut pas être nul, à droite. Maintenant, c'est le problème auquel je suis confronté. J'ai changé mes variables Java int en 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(); 
} 

Mon problème est ici:

pstmt.setInt(1, tempID); 

pstmt.setInt(3, tage); 

Je ne peux pas utiliser les variables entières ici. J'ai essayé avec intgerObject.intValue(); Mais cela rend les choses plus complexes. Avons-nous d'autres méthodes de conversion ou des techniques de conversion?

Toute correction serait meilleure.

+2

Je ne comprends pas.Vous recherchez quelque chose de plus simple que 'pstmt.setInt (1, tempID.intValue())'? Quoi de plus simple que d'ajouter 11 caractères de code? – EboMike

+1

Essayez de passer à Java 5 ou version ultérieure: la conversion sera effectuée automatiquement. –

+1

J'utilise 1.5 maintenant. –

Répondre

58

Comme déjà écrit ailleurs:

  • Pour Java 1.5 et plus tard vous n'avez pas besoin de faire quoi que ce soit (presque), il est fait par le compilateur.
  • Pour Java 1.4 et les versions antérieures, utilisez Integer.intValue() pour convertir Integer en int.

mais comme vous l'avez écrit, un Integer peut être nul, il est donc sage de vérifier que avant d'essayer de convertir en int (ou le risque d'obtenir un NullPointerException).

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

ou

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

*l'aide d'un défaut de zéro, pourrait aussi ne rien faire, montrer un avertissement ou ...

Je préfère ne pas utiliser la plupart du temps autoboxing (deuxième ligne d'échantillon) donc c'est clair ce que je veux faire.

+1

Java 1.4.2 n'a pas 'Integer.valueOf (int)' Refer: http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Integer.html#valueOf(java. lang.String) –

12

Puisque vous dites que vous utilisez Java 5, vous pouvez utiliser setInt avec un Integer en raison de l'autounboxing: pstmt.setInt(1, tempID) devrait fonctionner très bien. Dans les versions antérieures de Java, vous deviez appeler le .intValue() vous-même.

Les travaux opposés et ... l'attribution d'un int à un Integer provoquera automatiquement le int à l'aide autoboxed Integer.valueOf(int).

+1

Comment changer ceci "Integer id = rs.getInt (1);" à l'entier. –

+1

@MaRaVaN Vous faites exactement cela et cela fonctionne. – ColinD

+1

J'ai fait l'homme. Cela a fonctionné pour setInt() et j'apprécie cela. Ici, id est Integer & rs.getInt() renvoie une variable int. Ça ne fonctionne pas. –

4

Java convertit Integer en int et en arrière automatiquement (sauf si vous êtes toujours avec Java 1.4).

+5

Que se passe-t-il si un 'Integer' est' null'? – SparkAndShine

+1

@sparkandshine - un peu en retard, mais bien - 'null' devrait provoquer un' NullPointerException' –

4

Peut-être avez-vous les paramètres du compilateur pour votre IDE en mode Java 1.4 même si vous utilisez un JDK Java 5? Sinon, je suis d'accord avec les autres personnes qui ont déjà mentionné autoboxing/unboxing.

+1

Cela semble probable. – ColinD

3

Une autre façon simple serait:

Integer i = new Integer("10"); 

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