javaのMySQL(DataSource)
ちょっとDataSourceを使って会員登録をしてたら、エラーが出て先に進めなくなってしまったのでご教授願いたいと思い質問させていただきました。
server.xmlに、
<Resource name="MySQL_JDBC" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="MySQL_JDBC">を書いて、
web.xmlに、
<resource-ref>
<res-ref-name>MySQL_JDBC</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>を書いて、
会員登録をするアクションに、
DataSource dataSource=null;
public void init()throws ServletException{
try{
Context context=new InitialContext();
dataSource=(DataSource)context.lookup("java:comp/env/MySQL_JDBC");
}catch(NamingException e){
throw new ServletException(e);
}
}
Connection conn;
try{
conn=dataSource.getConnection();
Statement stmt = null;
String sql="insert into member(member_id,member_pass,family_name,first_name,birth_year,birth_month,birth_day,address,post_code,mail,"+
"sex,home_tel,job) values('"+ member_id +"',"+ mempasslong +",'"+ family_name +"','"+ first_name +"',"+ birth_year +","+ birth_month +","+ birth_day +",'"+ address +"',"+ post_code +",'"+ mail +"',"+sexint+","+ home_tel +",'"+ job +")";
int result=stmt.executeUpdate(sql);
}catch(SQLException e){
message = "登録失敗しました。";
request.setAttribute("message", message);
return mapping.findForward("registererror");
}
message = "登録完了しました。";
request.setAttribute("message", message);
return mapping.findForward("success");
}
}と書いて会員登録を完了させたいんですけど、会員情報を入力して実行すると、
致命的: サーブレット action のServlet.service()が例外を投げました
java.lang.NullPointerException
at memregister.AddressAction.execute(AddressAction.java:100)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
というエラーがでて先に進めなくなりました。エラーの場所は分かるのですが、どのように訂正すればいいと思いますか?ちなみにエラー1行目のAddressAction.java:100は、conn=dataSource.getConnection();の箇所です。
補足
yama06様ご回答ありがとうございます。 res.close()してもダメでした。。