クライアント側とサーバー側の間でデータが転送されるWebアプリケーションで作業しています。
JavaScript int!= Java intであることは既に知っています。なぜなら、Java intはnullにできないからです、そうです。今、これは私が直面している問題です。
Java int変数を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();
}
私の問題はここにあります:
pstmt.setInt(1, tempID);
pstmt.setInt(3, tage);
ここでは整数変数を使用できません。 intgerObject.intValue();
で試してみましたが、より複雑になります。他に何かありますか変換方法または変換技術
どんな修正でも良いでしょう。
他の場所ですでに書かれているように:
Integer.intValue()
を使用して整数から整数に変換します。しかし、あなたが書いたように、Integer
はnullになる可能性があるため、int
に変換しようとする前に(またはNullPointerException
を取得するリスクがある)チェックするのが賢明です。
pstmt.setInt(1, (tempID != null ? tempID : 0)); // Java 1.5 or later
または
pstmt.setInt(1, (tempID != null ? tempID.intValue() : 0)); // any version, no autoboxing
* デフォルトのゼロを使用、何もしない、警告を表示する、または...
私はオートボクシング(2番目のサンプル行)を使用しないことを主に好むので、私がやりたいことは明らかです。
Java 5を使用していると言うので、オートボックス化によりsetInt
とともにInteger
を使用できます。pstmt.setInt(1, tempID)
は正常に機能します。 Javaの以前のバージョンでは、.intValue()
を自分で呼び出す必要がありました。
反対も機能します... int
をInteger
に割り当てると、Integer.valueOf(int)
を使用してint
が自動的にボックス化されます。
JavaはIntegerをintに変換し、自動的に戻します(まだJava 1.4を使用している場合を除く)。
別の簡単な方法は次のとおりです。
Integer i = new Integer("10");
if (i != null)
int ip = Integer.parseInt(i.toString());
IDE 5 JDKを使用している場合でも、Javaのコンパイラ設定はJava 1.4モードに設定されていますか?そうでなければ、私はすでにオートボクシング/アンボクシングについて言及している他の人々に同意します。