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();の箇所です。
お礼
ご回答、ありがとうございます。 頂いた回答通りだと思います。 自分の中では、Adapterのdaで取得できるとばかり思い、 勘違いをしていたようです。 ぜいたくを言うと、dt[0]["name"]のように、 連想配列で取得したいのですが、直接そのように 取得することはできますでしょうか。 もし可能でしたら、教えていただければ幸いです。 よろしくお願いいたします。