내 하드웨어 테이블의 다른 레코드에서 내 KitID를 참조하는 레코드를 삭제할 때 예외를 처리하려고합니다. SQL Server Express 데이터베이스에서 관계를 설정했습니다.외래 키 제약 조건에 대한 SQLException 처리
내가 수신하고 오류가
이 FK_Hardware_Kit "참조 제약 조건과 충돌 DELETE 문은"C "충돌 데이터베이스에서 발생했습니다."입니다 : \ 웹 사이트가 GEOQ \ APP_DATA \ ASPNETDB.MDF을 \ "테이블"DBO . 하드웨어 ", 컬럼 'KitID'. 명령문이 종료되었습니다."
오류가 발생하기를 기대하지만 오류를 처리하는 코드가 작동하지 않는 이유가 궁금합니다.
TRY 및 CATCH에 일부 중단 점을 설정했습니다. SQL 문은 충돌이 없을 때 잘 실행되지만 충돌이 발생하면 catch 블록에 전혀 들어 가지 않습니다.
나는 아주 사소한 것을 놓치고 있다고 느낍니다.
CODE : 당신은 실제로 시도 섹션에서 기록을 삭제하지 않는
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
public partial class Controls_Control_Admin_Kit : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void KitListView_OnItemDeleting(object sender, ListViewDeleteEventArgs e)
{
try
{
string deleteCommand = "DELETE FROM [Kit] WHERE [KitID] = @KitID";
SqlDataSource1.DeleteCommand = deleteCommand;
}
catch (SqlException SqlEx)
{
switch (SqlEx.Number)
{
case 547:
// Do something.
ErrorLabel.Text = "Error: There are hardware items associated with this Kit. <br />You must change the Kit field of each of the hardware items prior to deleting it. " + HttpUtility.UrlEncode("http://www.google.com/search?q=Kits") + " that require changing";
break;
default:
throw;
}
}
}
}
:
여기 문서
예외를 처리하는 방법을 보여줍니다. 당신의 도움에 많은 감사드립니다. – LeeO123답변으로 표시 :) –