- ベストアンサー
DBに接続しブラウザ上に検索結果が全て表示されるServlet
首記の件ですが、コーティングしてコンパイルしても NullPointerExceptionがでてしまいます。 このServletはDB接続クラスと実行Servletにわかれていてます。 原因はDB接続クラスにレコードをカウントするメソッドが あるのですが、そこでNullPointerExceptionが発生して その他に影響を及ぼしているみたいです。 ・・・とまぁ、ここまで理解できたのですが行き詰まって しましましたのでご教授いただけると幸いです。 以下に問題のコードとエラー内容を記述します。 --接続クラス-- (略) private int count() throws SQLException { // 桁数 int rec = 0; // SQL文実行 rs = st.executeQuery("SELECT * FROM TESTTABLE1"); // カウント while(rs.next()) { rec++; } return rec; } } --エラーメッセージ-- java.lang.NullPointerException at DB.count(DB.java:146) at DB.select(DB.java:117) at SELECT.doGet(SELECT.java:73)
- みんなの回答 (4)
- 専門家の回答
お礼
そうでした。。。 next()メソッドはtrueの時に1行下にカーソルを 移動させるから値を取り出した後じゃ遅いのですね。 実行してみたらちゃんと動きました。すみません。 Servletを始めて2週間ぐらい経ちますがなかなか 難しいですね。 NullPointerExceptionの方ですが今までメソッド外で 「Statement st = null;」でオブジェクトを 宣言してたのですがメソッド内で宣言すればNullは なくなると思って下記のコードに直してみましたが ダメでした。if文を使ってnullの場合とそうでない場合を 条件分岐させた方が良いのでしょうか? public int count() throws SQLException { // 桁数 int rec = 0; // SQL実行準備 Statement st = con.createStatement(); // SQL文実行 ResultSet rs = st.executeQuery("SELECT COUNT (*) AS CNT FROM TESTTABLE1"); // カウント while(rs.next()) rec = rs.getInt("CNT"); rs.close(); st.close(); return rec; }