Je travaille sur une application Web dans laquelle les données seront transférées entre le client et le serveur.
Je sais déjà que JavaScript int! = Java int. Parce que Java int ne peut pas être nul, d'accord. C'est maintenant 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 Integer ici. J'ai essayé avec intgerObject.intValue();
Mais cela rend les choses plus complexes. Avons-nous d'autres méthodes de conversion ou techniques de conversion?
Toute solution serait meilleure.
Comme déjà écrit ailleurs:
Integer.intValue()
pour convertir d’Integer en int.MAIS comme vous l'avez écrit, un Integer
peut être nul, il est donc sage de le vérifier avant d'essayer de convertir en int
(sinon vous risquez 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
* avec un défaut de zéro, pourrait aussi ne rien faire, afficher un avertissement ou ...
Je préfère surtout ne pas utiliser la sélection automatique (deuxième ligne d'échantillon), donc ce que je veux faire est clair.
Puisque vous dites que vous utilisez Java 5, vous pouvez utiliser setInt
avec un Integer
en raison de la boîte automatique: pstmt.setInt(1, tempID)
devrait fonctionner uniquement Dans les versions précédentes de Java, vous auriez dû appeler vous-même .intValue()
.
Le contraire fonctionne également ... assigner un int
à un Integer
fera automatiquement passer le int
à l'aide de Integer.valueOf(int)
.
Java convertit Integer en int et en arrière automatiquement (sauf si vous êtes toujours avec Java 1.4).
Un autre moyen simple serait:
Integer i = new Integer("10");
if (i != null)
int ip = Integer.parseInt(i.toString());
Peut-être avez-vous les paramètres du compilateur pour votre mode IDE défini sur Java 1.4 même si vous utilisez un Java 5 JDK Sinon, je suis d’accord avec les autres personnes qui ont déjà parlé de l’autoboxing/unboxing.