다음을 통해 공유


데이터 집합의 데이터 유효성 검사

데이터 유효성 검사는 데이터 개체에 입력할 값이 응용 프로그램에 설정된 규칙 및 데이터 집합의 스키마 제약 조건을 따르는지 확인하는 과정입니다. 업데이트를 내부 데이터베이스에 보내기 전에 데이터의 유효성을 검사하면 응용 프로그램과 데이터베이스 간에 발생할 수 있는 잠재적인 라운드트립 횟수와 오류를 줄일 수 있습니다. 데이터 집합 자체에 유효성 검사 기능을 빌드하여 데이터 집합에 기록되고 있는 데이터가 유효한지 확인할 수 있습니다. 구성 요소 내에서 폼의 컨트롤을 직접 사용하여 업데이트하거나 다른 방식으로 업데이트할 수 있으며, 업데이트 방법에 상관없이 데이터 집합에서 데이터를 검사할 수 있습니다. 데이터 집합은 응용 프로그램의 일부이므로 응용 프로그램 관련 유효성 검사를 빌드하기에 적합한 논리적 위치입니다. 이는 동일한 검사를 데이터베이스 백엔드에 빌드할 때와는 다릅니다.

응용 프로그램에 유효성 검사를 추가할 때는 데이터 집합의 partial 클래스 파일에 추가하는 것이 좋습니다. Visual Basic 또는 Visual C#에서 데이터 집합 디자이너를 열고 유효성 검사를 만들 테이블이나 열을 두 번 클릭합니다. 이렇게 하면 ColumnChanging 또는 RowChanging 이벤트 처리기가 자동으로 만들어집니다. 자세한 내용은 방법: 열 변경 중 데이터 유효성 검사 또는 방법: 행 변경 중 데이터 유효성 검사를 참조하십시오. 전체 예제는 연습: 데이터 집합에 유효성 검사 추가를 참조하십시오.

데이터 유효성 검사

데이터 집합 내에서 유효성 검사는 다음과 같이 수행할 수 있습니다.

한 레코드에서 변경이 발생하면 DataTable 개체에서 여러 개의 이벤트를 발생시킵니다.

기본적으로 열에서 변경이 이루어질 때마다 네 개의 이벤트가 발생합니다. 먼저 변경되고 있는 특정 열에 대해 ColumnChangingColumnChanged 이벤트가 발생하고 그 다음에는 RowChangingRowChanged 이벤트가 발생합니다. 해당 행에서 여러 내용을 변경하는 경우 변경이 이루어질 때마다 이벤트가 발생합니다.

참고

데이터 행의 BeginEdit 메서드는 열에 대한 각 변경이 이루어진 후에 RowChangingRowChanged 이벤트를 해제합니다. 이 경우 EndEdit 메서드가 호출될 때까지는 이러한 이벤트가 발생하지 않습니다. 따라서 RowChangingRowChanged 이벤트는 한 번만 발생합니다. 자세한 내용은 방법: 데이터 집합을 채우는 동안 제약 조건 해제를 참조하십시오.

이벤트의 선택은 유효성 검사의 복잡성에 따라 달라집니다. 열이 변경되었을 때 오류를 즉시 catch하는 것이 중요한 경우 ColumnChanging 이벤트를 사용하여 유효성 검사를 빌드해야 합니다. 그렇지 않은 경우에는 한번에 여러 오류를 catch하는 RowChanging 이벤트를 사용합니다. 그리고 데이터 구조상, 다른 열의 내용을 기본으로 하여 특정 열 값에 대한 유효성을 검사해야 하는 경우에는 RowChanging 이벤트 동안 유효성 검사를 수행해야 합니다.

레코드가 업데이트되면 DataTable 개체는 변경이 이루어지는 동안 및 변경이 이루어진 후에 응답할 수 있는 이벤트를 발생시킵니다.

사용자 응용 프로그램에서 형식화된 데이터 집합을 사용하고 있으면 강력한 형식의 이벤트 처리기를 만들 수 있습니다. 이렇게 하면 처리기를 만들 수 있는 네 개의 형식화된 이벤트인 dataTableNameRowChanging, dataTableNameRowChanged, dataTableNameRowDeleting 및 dataTableNameRowDeleted를 추가할 수 있습니다. 이러한 형식화된 이벤트 처리기는 테이블의 열 이름을 포함하는 인수를 전달하므로 코드를 읽고 쓰기가 더 쉬워집니다.

데이터 업데이트 이벤트

Event

설명

ColumnChanging

열 값이 변경되고 있습니다. 이 이벤트는 제안된 새 값과 함께 행과 열을 사용자에게 전달합니다.

ColumnChanged

열 값이 변경되었습니다. 이 이벤트는 제안된 값과 함께 행과 열을 사용자에게 전달합니다.

RowChanging

DataRow 개체의 변경 내용이 데이터 집합으로 다시 커밋될 것입니다. BeginEdit 메서드를 호출하지 않았으면 ColumnChanging 이벤트가 발생한 직후 열의 각 변경 내용에 대해 RowChanging 이벤트가 발생합니다. 변경하기 전에 BeginEdit을 호출하였으면 EndEdit 메서드를 호출할 때만 RowChanging 이벤트가 발생합니다.

이 이벤트는 변경, 삽입 등 수행되어야 할 동작 유형을 표시하는 값과 행을 사용자에게 전달합니다.

RowChanged

한 행이 변경되었습니다. 이 이벤트는 변경, 삽입 등 수행되어야 할 동작 유형을 표시하는 값과 행을 사용자에게 전달합니다.

RowDeleting

한 행이 삭제되고 있습니다. 이 이벤트는 수행된 동작 유형(삭제)을 표시하는 값과 행을 사용자에게 전달합니다.

RowDeleted

한 행이 삭제되었습니다. 이 이벤트는 수행된 동작 유형(삭제)을 표시하는 값과 행을 사용자에게 전달합니다.

업데이트 과정 동안 ColumnChanging, RowChangingRowDeleting 이벤트가 발생합니다. 이러한 이벤트를 사용하여 데이터 유효성 검사를 하거나 다른 유형의 처리 작업을 수행할 수 있습니다. 이러한 이벤트 중에 업데이트가 진행되고 있으므로 예외를 throw하여 업데이트 작업을 취소함으로써 변경이 완료되는 것을 막을 수 있습니다.

ColumnChanged, RowChangedRowDeleted 이벤트는 업데이트가 완료되었을 때 발생하는 알림 이벤트입니다. 업데이트가 성공적으로 이루어진 다음 후속 조치를 취해야 할 때 이러한 이벤트를 유용하게 사용할 수 있습니다.

참고 항목

작업

방법: 데이터베이스의 데이터에 연결

방법: Windows Forms DataGridView 컨트롤의 데이터 유효성 검사

방법: Windows Forms ErrorProvider 구성 요소를 사용하여 폼 유효성에 대한 오류 아이콘 표시

개념

데이터 집합 디자이너