Ich arbeite an einer Webanwendung, in der Daten zwischen Client- und Serverseite übertragen werden.
Ich weiß bereits, dass JavaScript int! = Java int. Weil Java int nicht null sein kann, richtig. Das ist das Problem, mit dem ich konfrontiert bin.
Ich habe meine Java int-Variablen in Integer geändert.
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();
}
Mein Problem ist hier:
pstmt.setInt(1, tempID);
pstmt.setInt(3, tage);
Ich kann die Integer-Variablen hier nicht verwenden. Ich habe es mit versucht. intgerObject.intValue();
Aber es macht die Dinge komplexer. Haben wir andere Konvertierungsmethoden oder Konvertierungstechniken?
Jede Lösung wäre besser.
pstmt.setInt(1, tempID.intValue())
? Was ist einfacher als das Hinzufügen von Code im Wert von 11 Zeichen?Antworten:
Wie schon an anderer Stelle geschrieben:
Integer.intValue()
Konvertierung von Integer nach int.ABER wie Sie geschrieben haben,
Integer
kann ein null sein, daher ist es ratsam, dies zu überprüfen, bevor Sie versuchen, zu konvertierenint
(oder das Risiko einzugehenNullPointerException
).pstmt.setInt(1, (tempID != null ? tempID : 0)); // Java 1.5 or later
oder
pstmt.setInt(1, (tempID != null ? tempID.intValue() : 0)); // any version, no autoboxing
* mit einem Standardwert von Null, könnte auch nichts tun, eine Warnung anzeigen oder ...
Ich bevorzuge meistens kein Autoboxing (zweite Beispielzeile), damit klar ist, was ich tun möchte.
quelle
Integer.valueOf(int)
Referenz: docs.oracle.com/javase/1.4.2/docs/api/java/lang/…Da Sie sagen, Sie verwenden Java 5, können Sie
setInt
mit einemInteger
aufgrund von Autounboxing verwenden:pstmt.setInt(1, tempID)
sollte gut funktionieren. In früheren Versionen von Java hätten Sie sich selbst anrufen müssen.intValue()
.Das Gegenteil funktioniert auch ... Wenn Sie ein zuweisen
int
,Integer
wird automatisch einint
Autobox mit verwendetInteger.valueOf(int)
.quelle
Java konvertiert Integer automatisch in int und zurück (es sei denn, Sie arbeiten noch mit Java 1.4).
quelle
Integer
istnull
?null
sollte einenNullPointerException
Ein anderer einfacher Weg wäre:
Integer i = new Integer("10"); if (i != null) int ip = Integer.parseInt(i.toString());
quelle
Vielleicht haben Sie die Compilereinstellungen für Ihre IDE auf den Java 1.4-Modus eingestellt, auch wenn Sie ein Java 5 JDK verwenden? Ansonsten stimme ich den anderen Personen zu, die bereits Autoboxing / Unboxing erwähnt haben.
quelle