-2
データベースにデータを入れ、htmlページからデータベース内のデータを検索するアプリケーションを作成しようとしています。私はサーブレットAPIを使用しています、私は正常にデータベースからデータを取得しますが、データベースに存在しないデータについては、同じhtmlページに "data not found"メッセージを取得する必要があります。私はデータベースのデータをチェックするための条件を書いていますが、データベースに存在しないデータの場合、 "NULLポインタ例外"のエラーメッセージが表示され、whileループはデータベース内のすべてのデータをチェックした後、データベース内にユーザーデータが見つからない場合、whileループを解除する方法
// this while loop doesn't terminate by itself if the data is not found in the database.
int flag=0;
while(rs.next()){
if (rs.getString(1).equals(fname)&&(rs.getString(2).equals(lname)))
{
String message=rs.getString(4);
out.print("<h2 align='center'>"+message+"</h2>");
RequestDispatcher disp = req.getRequestDispatcher("/index.html");
disp.include(req,res);
flag=1;
}
}
if(flag==0)
{
out.print("<h1>"+"data not found"+"</h1>");
RequestDispatcher disp = req.getRequestDispatcher("/index.html");
disp.include(req,res);
System.out.println(flag);
}
}
'break'ステートメントを使用しますか? – Mena
@Menaは、 'System.out.println(flag);の後に' break; 'を追加しました; – Null
ループを中断する必要はありません。データがない場合、 'rs.next()'は決して真ではありません。あなたのコード中の余分な '}'がメソッドの終わりである場合、最初の 'disp.include'呼び出しの後に戻り、フラグを冗長にしたいと思うかもしれません。 NPEを取得している場合は、おそらくループの中で比較している2つの列の値のうちの1つが、実際にはヌルです(複数の行がある可能性があります)。 NPEはどのラインを報告していますか? (また、多くのデータを取得してからJavaをチェックするのではなく、指定したfname/lnameを検索するフィルタをクエリに追加しないでください) –