Как отловить выражение «Невозможно удалить или обновить родительскую строку: ограничение внешнего ключа не выполнено» и добавить его на новую страницу? - PullRequest
0 голосов
/ 11 сентября 2009

Я использую следующий код для перехвата выражения 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 Ответ

0 голосов
/ 11 сентября 2009

Все зависит от того, как вы делаете свои JSP.

Существует два принципиально разных подхода, именуемых Модель 1 и Модель 2 . Я использовал Модель 2, поэтому запросы попадают в сервлет, сервлет выполняет некоторую бизнес-логику, а затем решает, какую страницу отображать.

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);
          }

   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...