代码之家  ›  专栏  ›  技术社区  ›  sh_

如何捕获“无法删除或更新父行:外键约束失败”表达式并将其放入新页?

sql
  •  0
  • sh_  · 技术社区  · 15 年前

    我使用下面的代码来捕获sql表达式,当我试图删除主键时,它也是外键,并且被映射到另一个表,我的问题是,如何将它转发到一个常见的错误页?

    为了抓住这个表达,

    if(e.Exception is SqlException)
            {
                 SqlException ex = (SqlException)e.Exception; 
                 if (ex.Number == 547)
                    ErrorMessage("Record cannot be deleted or changed " + 
                                   "as it is being used somewhere else");
    
                 else if (ex.Number == 2627)
                    ErrorMessage("Record cannot be saved, as another " + 
                                 "record with this key already exists");
    
                 else
                    ErrorMessage(ex.Message.ToString());
            }
            else
                 ErrorMessage("System Error :"+e.Exception.Message.ToString());
    
    1 回复  |  直到 15 年前
        1
  •  0
  •   djna    15 年前

    这完全取决于你如何做你的jsp。

    有两种根本不同的方法,称为 Model 1 and Model 2 . 我使用模型2,所以请求命中一个Servlet,Servlet执行一些业务逻辑,然后决定显示哪个页面。

    public class MyServlet extends HttpServlet {
    
       public void doPost (HttpServletRequest req, HttpServletResponse res){
    
              // some work here
    
              ServletContext sc = getServletContext();
    
              if ( good ){
                       session.putValue("beanToDisplay", anAnswer);
                       String url="/jsp/Good.jsp";
                       RequestDispatcher rd = sc.getRequestDispatcher(url);
                       rd.forward(req, res);
              } else {
                       session.putValue("exceptionToDisplay", anException);
                       String url="/jsp/bad.jsp";
                       RequestDispatcher rd = sc.getRequestDispatcher(url);
                       rd.forward(req, res);
              }
    
       }