Pracuję nad aplikacją internetową, w której dane będą przesyłane między klientem a serwerem.
Już wiem, że JavaScript int! = Java int. Ponieważ Java int nie może być zerowa, prawda. To jest problem, przed którym stoję.
Zmieniłem zmienne int Java na 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();
}
Mój problem jest tutaj:
pstmt.setInt(1, tempID);
pstmt.setInt(3, tage);
Nie mogę tutaj użyć zmiennych całkowitych. Próbowałem z intgerObject.intValue();
Ale to komplikuje sprawę. Czy mamy inne metody lub techniki konwersji?
Każda poprawka byłaby lepsza.
pstmt.setInt(1, tempID.intValue())
? Co jest łatwiejsze niż dodanie 11 znaków kodu?Odpowiedzi:
Jak już napisano w innym miejscu:
Integer.intValue()
do konwersji z liczby całkowitej na int.ALE jak napisałeś, an
Integer
może być zerowe, więc dobrze jest to sprawdzić przed próbą konwersji naint
(lub ryzykować uzyskanie aNullPointerException
).pstmt.setInt(1, (tempID != null ? tempID : 0)); // Java 1.5 or later
lub
pstmt.setInt(1, (tempID != null ? tempID.intValue() : 0)); // any version, no autoboxing
* używając domyślnej wartości zero, może również nic nie zrobić, wyświetlić ostrzeżenie lub ...
Przede wszystkim wolę nie używać autoboxingu (druga linia próbkowania), więc jest jasne, co chcę zrobić.
źródło
Integer.valueOf(int)
Refer: docs.oracle.com/javase/1.4.2/docs/api/java/lang/…Ponieważ mówisz, że używasz Java 5, możesz używać
setInt
zInteger
powodu autounboxingu:pstmt.setInt(1, tempID)
powinno działać dobrze. We wcześniejszych wersjach Java musiałbyś dzwonić do.intValue()
siebie.Działa to również odwrotnie ... przypisanie an
int
do anInteger
spowoduje automatyczne automatyczneint
przypisanie adresu za pomocąInteger.valueOf(int)
.źródło
Java automatycznie konwertuje liczbę całkowitą na int iz powrotem (chyba, że nadal korzystasz z Java 1.4).
źródło
Integer
jestnull
?null
powinno spowodowaćNullPointerException
Innym prostym sposobem byłoby:
Integer i = new Integer("10"); if (i != null) int ip = Integer.parseInt(i.toString());
źródło
Być może masz ustawienia kompilatora dla swojego IDE ustawione na tryb Java 1.4, nawet jeśli używasz Java 5 JDK? W przeciwnym razie zgadzam się z innymi osobami, które wspomniały już o autoboxingu / unboxingu.
źródło