dポイントプレゼントキャンペーン実施中!

DB:SQL Server 2005
JDBCを使ってデータベースへアクセスし、SQL発行して結果をResultsetに格納、getStringで各項目の値を取得するところまでは確認できています。

外部結合したテーブルを参照していおり、getString()でnullを取得した場合にjava.lang.NullPointerExceptionが返ってエラーとなってしまいます。

回避策はあるのでしょうか?
抜粋したソースを下記に記します。

-- test.jsp --
<%
ResultSet rs = db.executeQuery(sql);
while(rs.next()){
String disp_object = rs.getString("object");
if(disp_object == null) disp_object="---";
}
%>
<tr>Object</tr>
<tr><%=disp_object%></tr>

A 回答 (2件)

<%


ResultSet rs = db.executeQuery(sql);
String disp_object = "---";
while(rs.next()){
disp_object = rs.getString("object");
if (disp_object == null) {
disp_object = "---";
}
}
%>
<tr>Object</tr>
<tr><%=disp_object%></tr>

これでどうです?
※ ProKaseifuさんの回答にある記述でも
NullPointerは発生しないような気もしますが・・・?
    • good
    • 0
この回答へのお礼

御回答有難う御座います
すみません、自己解決しました。。。

結果的に、NullPointerが発生している箇所が私の質問した箇所と異なっていたという最悪の結果でした。

「getString()ではnullの値を読む時にエラーが発生する」となぜか勝手に解釈をしていましたが、実際にはその文字列を操作した時に発生していました。

大変、御手数をお掛け致しました(/-T);
恥ずかしながら該当する箇所を記載致します。

String discom1; // ページに表示する値。
String com = rs.getString("comment"); // commentの値をcomに格納
if(com.length() > 5)discom1 = com.substring(0, 5) + ".."; // 文字数が6文字以上は「aaaaa..」と表示

という箇所を
String discom1="";
String com="";
if(com1 != null){
if(com1.length() > 5)discom1 = com1.substring(0, 5) + "..";
}
としただけです。

ProKaseifulさん並びにpug0429さん、大変失礼をいたしました。

お礼日時:2009/04/24 12:37

変数のスコープがおかしいですよ。



<%
ResultSet rs = db.executeQuery(sql);
String disp_object = "---";
while(rs.next()){
disp_object = rs.getString("object");
}
%>
<tr>Object</tr>
<tr><%=disp_object%></tr>
    • good
    • 0
この回答へのお礼

御解答有難う御座います。

String disp_object = "---";

を追加してみましたが、やはり結果は同じjava.lang.NullPointerExceptionが返ってきました。

NULL値を参照する場合の常套手段というのは何かあるのでしょうか?

お礼日時:2009/04/24 01:06

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

このQ&Aを見た人はこんなQ&Aも見ています