プロが教える店舗&オフィスのセキュリティ対策術

タイトルのことをしようとすると、「java.lang.NullPointerException」というエラーが出ますが、これを解消するにはどうすればよいのでしょうか?

そのエラーがでるページのソースを上げておきます。

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ page import="java.sql.*" %>

<%!
//toUnicodeメソッドの定義

public String toUnicode(String s)
throws java.io.UnsupportedEncodingException {
return (new String(s.getBytes("8859_1"), "JISAutoDetect"));
}
%>

<%
//JDBCドライバのロード
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

//データベースへ接続
String jdbcUrl = "jdbc:odbc:AnsSheet";
String user = "root";
String password = "progressive";
Connection con
= DriverManager.getConnection(jdbcUrl,user,password);

//SQL実行
Statement stmt = con.createStatement ();
String sql = "INSERT INTO AnsSheet (問題, a, b, c, d, e, f) VALUES(";
sql = sql + "'" + toUnicode(request.getParameter("問題")) + "',";
sql = sql + "'" + toUnicode(request.getParameter("a")) + "',";
sql = sql + "'" + toUnicode(request.getParameter("b")) + "',";
sql = sql + "'" + toUnicode(request.getParameter("c")) + "',";
sql = sql + "'" + toUnicode(request.getParameter("d")) + "',";
sql = sql + "'" + toUnicode(request.getParameter("e")) + "',";
sql = sql + toUnicode(request.getParameter("f")) + ")";
int cnt = stmt.executeUpdate(sql);


//接続解除
stmt.close();
con.close();
%>
<jsp:forward page="keepAnsSheet.jsp" />

A 回答 (3件)

>新たに作った方のjspを直にアドレス入力してみると、先のプログラムとまったく同じ「java.lang.NullPointerException」と出ました。


>ということはデータがjspファイルに送られていないということでしょうか?
 ということは、恐らく、パラメーターが取得できないために、
下記メソッドの引数がnullだからなのでしょう。

>public String toUnicode(String s)
>throws java.io.UnsupportedEncodingException {
>return (new String(s.getBytes("8859_1"), "JISAutoDetect"));
>}

 というか、提示されたことくらいやってみてください。
そうすれば、すぐに解るはずです・・・。(^^;)
    • good
    • 0

 例外が発生している行が表示されているはずです。


このとき指している行は、
JSPがサーブレットに変換されたソースファイルの行です。
これから、該当するJSPの行を修正しましょう。
これが良く解らないなら、
System.out.println(con);
System.out.println(stmt);
とかして、どのオブジェクトがNullなのか見てみましょう。
Eclipceとか使っているなら、ツールの機能でも良いですから、
とにかく値を確認してみましょう。(^^;)
    • good
    • 0
この回答へのお礼

お二方の回答ありがとうございます。

ちなみにACCESS(私はACCESS2003を使っています)で作ったデータベースをブラウザ上に表示することには成功しています。

データを追加するには、HTMLファイル(追加する情報の入力)とjspファイル(追加した後のDBの表示)の2つ出来ますよね?

似たようなプログラムを作ってみたのですが、新たに作ったほうはちゃんと動作しました。
新たに作った方のjspを直にアドレス入力してみると、先のプログラムとまったく同じ「java.lang.NullPointerException」と出ました。
ということはデータがjspファイルに送られていないということでしょうか?

エラーの内容を書いておきます。

type:Exception report

message:Internal Server Error

description:The server encountered an internal error (Internal Server Error) that prevented it from fulfilling this request.

exception

java.lang.NullPointerException
    以下例外の場所をズラーっと書いていますが、多すぎるので割愛します

お礼日時:2005/02/04 16:07

con、stmt等が正しくオブジェクトを生成できていないか、すでになくなってしまっているオブジェクト等に対して処理しようとしているのかも。



正しくデータベースにコネクトできているのかな?
できていないまま、データベースにアクセスしていませんか?

下記を参考にして例外処理組んで確認してみては。

参考URL:http://www.atmarkit.co.jp/fjava/rensai/jdbc03/jd …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!