1

RegAction.java

 private static final String FORWARD_succ = "succ";
Connection con=null;
public Connection getcon()
    {
    try
        {

        Class.forName("com.mysql.jdbc.Driver");
        con=DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql","root","root");
        }catch(SQLException e)
        {}
        catch(ClassNotFoundException c)
        {
        }
        return con;
    }

    public void closeConnection()
    {
        try
        {
            con.close();
        }catch(SQLException e)
        {}
    }
   public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException 
  {
   RegForm1 r=(RegForm1)form;
     Connection con=getcon();

 String v1=r.getFname();
 String v2=r.getLname();
   String v3=r.getUid();
   String v4=r.getDob();
  String v5=r.getPwd();
  String v6=r.getCpwd();
   String v7=r.getCity();
  String v8=r.getSt();
  String v9=r.getZc();
 System.out.println(v1);
 System.out.println(v2);
 System.out.println(v3);
  System.out.println(v4);
 System.out.println(v5);
 System.out.println(v6);
 System.out.println(v7);
 System.out.println(v8);
  System.out.println(v9);

 try
{
PrintWriter pw=response.getWriter();
  Statement ps=con.createStatement();
   int k=ps.executeUpdate("insert into reg values(v1,v2,v3,v4,v5,v6,v7,v8,v9)");
    if(k==1)
      pw.println("susccessfully stored");
       con.commit();
}catch(SQLException s)
{
}

catch(IOException s)
{
}
  return mapping.findForward("succ");

config.xml

  <form-bean name="regform" type="RegForm1"/>
  </form-beans>
  <global-exceptions/>
  <global-forwards/>
  <action-mappings>
   <action name="regform" path="/reg" type="RegAction" validate="true input="/Register.jsp">
    <forward name="succ" path="/success.jsp"/>

次のフィールド値をmysqlデータベースに保存したい。しかし、なぜ次の例外が発生するのですか?

新しいユーザーの詳細名*:姓*:

ユーザーID* :

Dob *:

パスワード*:

パスワードを認証する*

街*:

州*:

郵便番号*:

ボタン

HTTPステータス500-


type Exception report
message 
description The server encountered an internal error () that prevented it from fulfilling this request.
exception 
javax.servlet.ServletException
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
root cause 
java.lang.NullPointerException
    RegAction.execute(RegAction.java:75)
    org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
    org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
    org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.29 logs.

Apache Tomcat / 5.5.29

4

2 に答える 2

1

シバ..

int k=ps.executeUpdate("insert into reg values(v1,v2,v3,v4,v5,v6,v7,v8,v9)");

上記のステートメントでV1,V2,v3...は、. を使用する代わりに文字列値として扱われますPrepareStatement。それ以外の場合は、次のようにコードを書き直してください。

int k=ps.executeUpdate("insert into reg values('"+v1+"','"+v2+"','"+ . . );

リスト(v1、v2、v3 ..)に数値がある場合、''コードを入力する必要はありません..これが得られることを願っています..

于 2012-07-20T07:55:39.130 に答える
0

あなたのコードは実際には非常に読みにくいです。私の推測では、この行: Statement ps=con.createStatement();cause NPE. メソッドで例外を無視していることを考えると、getCon言うのは難しいです。これらのタイプの例外を無視するべきではありません。それらをログに記録し、正確な例外が何であるかを確認する必要があります。ロギング フレームワークを使用してそれを行うか、単にスタック トレースを出力して自分で確認してください。

catch(SQLException e) {
   //log the exception
}
catch(ClassNotFoundException c) {
   //log the exception    
}

getConメソッド内の接続は として返されると思いますnull。データベース接続に問題がないかどうかを確認する必要があります。

于 2012-07-19T18:06:51.513 に答える